From c56368056c8a44106350be2ca1c550044c10d631 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 18 Sep 2025 10:35:20 -0400 Subject: [PATCH 1/7] Add graalvm25 image to testing --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5a1ba7456c9..0fd8d9a304e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ variables: GRADLE_VERSION: "8.14.3" # must match gradle-wrapper.properties MAVEN_REPOSITORY_PROXY: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/" GRADLE_PLUGIN_PROXY: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/" - BUILDER_IMAGE_VERSION_PREFIX: "v25.09-" # use either an empty string (e.g. "") for latest images or a version followed by a hyphen (e.g. "v25.05-") + BUILDER_IMAGE_VERSION_PREFIX: "119_merge-" # use either an empty string (e.g. "") for latest images or a version followed by a hyphen (e.g. "v25.05-") REPO_NOTIFICATION_CHANNEL: "#apm-java-escalations" DEFAULT_TEST_JVMS: /^(8|11|17|21|25)$/ # the latest "stable" version is LTS v25 PROFILE_TESTS: @@ -722,7 +722,7 @@ test_smoke_graalvm: NON_DEFAULT_JVMS: "true" parallel: matrix: - - testJvm: ["graalvm17", "graalvm21"] + - testJvm: ["graalvm17", "graalvm21", "graalvm25"] test_smoke_semeru8_debugger: extends: .test_job From c550712a0b212e9ce2c32cf6bfaa5cd7459d235e Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 18 Sep 2025 11:38:08 -0400 Subject: [PATCH 2/7] Add flag to allow use of unsafe --- dd-smoke-tests/spring-boot-3.0-native/application/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle index 7a3c9737289..a545d93ece0 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle +++ b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle @@ -36,6 +36,7 @@ if (hasProperty('agentPath')) { // quick build mode, enough for smoke test buildArgs.add("-Ob") buildArgs.add("-J-javaagent:$agentPath") + buildArgs.add("-J-Dnet.bytebuddy.safe=false") if (withProfiler && property('profiler') == 'true') { buildArgs.add("-J-Ddd.profiling.enabled=true") } From d647f2622b9a5e0fd917e003b775ce50246edbbc Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 18 Sep 2025 13:21:19 -0400 Subject: [PATCH 3/7] Add Graalvm 25 specification to profiling --- .../nativeimage/NativeImageGeneratorRunnerInstrumentation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java index b61ab5e7531..051f76289db 100644 --- a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java +++ b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java @@ -169,7 +169,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ // We don't want to drag in internal-api via Platform class, so we just read the system // property directly String version = SystemProperties.getOrDefault("java.specification.version", ""); - if (version.startsWith("17")) { + if (version.startsWith("17") || version.startsWith("25")) { args[oldLength++] = "-H:EnableMonitoringFeatures=jfr"; } else { args[oldLength++] = "-H:EnableMonitoringFeatures@user+api=jfr"; From af76058b83a5333450896ba9b98b3094f2c4fb75 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Thu, 18 Sep 2025 15:19:24 -0400 Subject: [PATCH 4/7] Change arg for Graalvm 25 --- dd-smoke-tests/spring-boot-3.0-native/application/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle index a545d93ece0..704ecc8fd4f 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle +++ b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle @@ -39,6 +39,7 @@ if (hasProperty('agentPath')) { buildArgs.add("-J-Dnet.bytebuddy.safe=false") if (withProfiler && property('profiler') == 'true') { buildArgs.add("-J-Ddd.profiling.enabled=true") + buildArgs.add("--enable-monitoring=jfr") } jvmArgs.add("-Xmx3072M") } From be1633658de1b123e4fcf59c06e4a31a99b8c9d3 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 19 Sep 2025 14:35:36 -0400 Subject: [PATCH 5/7] Add flag to start jfr recording --- .../src/test/groovy/SpringBootNativeInstrumentationTest.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy b/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy index 48be4c9647a..713a503e815 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy +++ b/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy @@ -51,6 +51,7 @@ class SpringBootNativeInstrumentationTest extends AbstractServerSmokeTest { "-Ddd.trace.debug=true", "-Ddd.jmxfetch.statsd.port=${statsdPort}", "-Ddd.jmxfetch.start-delay=0", + "-XX:StartFlightRecording=filename=${testJfrDir}/recording.jfr", ]) ProcessBuilder processBuilder = new ProcessBuilder(command) processBuilder.directory(new File(buildDirectory)) From 6f9f05d3cad0217aa2e8439283bd6bb5f4eabd70 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Fri, 19 Sep 2025 15:47:38 -0400 Subject: [PATCH 6/7] Try removing extra flags --- .../nativeimage/NativeImageGeneratorRunnerInstrumentation.java | 2 +- dd-smoke-tests/spring-boot-3.0-native/application/build.gradle | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java index 051f76289db..b61ab5e7531 100644 --- a/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java +++ b/dd-java-agent/instrumentation/graal/native-image/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java @@ -169,7 +169,7 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ // We don't want to drag in internal-api via Platform class, so we just read the system // property directly String version = SystemProperties.getOrDefault("java.specification.version", ""); - if (version.startsWith("17") || version.startsWith("25")) { + if (version.startsWith("17")) { args[oldLength++] = "-H:EnableMonitoringFeatures=jfr"; } else { args[oldLength++] = "-H:EnableMonitoringFeatures@user+api=jfr"; diff --git a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle index 704ecc8fd4f..a545d93ece0 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle +++ b/dd-smoke-tests/spring-boot-3.0-native/application/build.gradle @@ -39,7 +39,6 @@ if (hasProperty('agentPath')) { buildArgs.add("-J-Dnet.bytebuddy.safe=false") if (withProfiler && property('profiler') == 'true') { buildArgs.add("-J-Ddd.profiling.enabled=true") - buildArgs.add("--enable-monitoring=jfr") } jvmArgs.add("-Xmx3072M") } From bd4ef8931e17bdd251457cc1aaca39c38931727a Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 22 Sep 2025 15:30:05 -0400 Subject: [PATCH 7/7] Remove flag --- .../src/test/groovy/SpringBootNativeInstrumentationTest.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy b/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy index 713a503e815..48be4c9647a 100644 --- a/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy +++ b/dd-smoke-tests/spring-boot-3.0-native/src/test/groovy/SpringBootNativeInstrumentationTest.groovy @@ -51,7 +51,6 @@ class SpringBootNativeInstrumentationTest extends AbstractServerSmokeTest { "-Ddd.trace.debug=true", "-Ddd.jmxfetch.statsd.port=${statsdPort}", "-Ddd.jmxfetch.start-delay=0", - "-XX:StartFlightRecording=filename=${testJfrDir}/recording.jfr", ]) ProcessBuilder processBuilder = new ProcessBuilder(command) processBuilder.directory(new File(buildDirectory))