diff --git a/dd-java-agent/agent-jmxfetch/build.gradle b/dd-java-agent/agent-jmxfetch/build.gradle index f92c505a087..b65d3a110f5 100644 --- a/dd-java-agent/agent-jmxfetch/build.gradle +++ b/dd-java-agent/agent-jmxfetch/build.gradle @@ -13,12 +13,14 @@ plugins { apply from: "$rootDir/gradle/java.gradle" dependencies { - api('com.datadoghq:jmxfetch:0.49.8') { + api('com.datadoghq:jmxfetch:0.52.0') { exclude group: 'org.slf4j', module: 'slf4j-api' exclude group: 'org.slf4j', module: 'slf4j-jdk14' exclude group: 'com.beust', module: 'jcommander' exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core' exclude group: 'com.fasterxml.jackson.jr', module: 'jackson-jr-objects' + // we use snakeyaml-engine instead of legacy library + exclude group: 'org.yaml', module: 'snakeyaml' } api libs.slf4j api project(':internal-api') diff --git a/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/LegacyYaml.java b/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/LegacyYaml.java new file mode 100644 index 00000000000..09a31edeeeb --- /dev/null +++ b/dd-java-agent/agent-jmxfetch/src/main/java/datadog/trace/agent/jmxfetch/LegacyYaml.java @@ -0,0 +1,18 @@ +package datadog.trace.agent.jmxfetch; + +import java.io.InputStream; + +/** + * We map the legacy {@code org.yaml.snakeyaml.Yaml} class to this substitute class at build time to + * keep the GraalVM native-image builder happy. JmxFetch has a solitary reference to the class, but + * it's never called because JMXFetch discovers the embedded snakeyaml-engine library and uses that. + */ +public class LegacyYaml { + public T load(InputStream in) { + throw new UnsupportedOperationException(); + } + + public String dump(Object data) { + throw new UnsupportedOperationException(); + } +} diff --git a/dd-java-agent/build.gradle b/dd-java-agent/build.gradle index f05fe7ca779..1fdfb38ec8d 100644 --- a/dd-java-agent/build.gradle +++ b/dd-java-agent/build.gradle @@ -156,6 +156,7 @@ def generalShadowJarConfig(ShadowJar shadowJarTask) { // Prevents conflict with other instances, but doesn't relocate instrumentation if (!projectName.equals('instrumentation')) { relocate 'org.snakeyaml.engine', 'datadog.snakeyaml.engine' + relocate 'org.yaml.snakeyaml.Yaml', 'datadog.trace.agent.jmxfetch.LegacyYaml' relocate 'okhttp3', 'datadog.okhttp3' relocate 'okio', 'datadog.okio' @@ -467,7 +468,7 @@ tasks.register('checkAgentJarSize') { doLast { // Arbitrary limit to prevent unintentional increases to the agent jar size // Raise or lower as required - assert tasks.named("shadowJar", ShadowJar).get().archiveFile.get().getAsFile().length() <= 32 * 1024 * 1024 + assert tasks.named("shadowJar", ShadowJar).get().archiveFile.get().getAsFile().length() <= 33 * 1024 * 1024 } dependsOn "shadowJar" diff --git a/dd-java-agent/instrumentation/graal/graal-native-image-20.0/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java b/dd-java-agent/instrumentation/graal/graal-native-image-20.0/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java index de9422d24d5..a6299604e29 100644 --- a/dd-java-agent/instrumentation/graal/graal-native-image-20.0/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java +++ b/dd-java-agent/instrumentation/graal/graal-native-image-20.0/src/main/java/datadog/trace/instrumentation/graal/nativeimage/NativeImageGeneratorRunnerInstrumentation.java @@ -65,8 +65,6 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "com.datadog.profiling.controller.openjdk.events.QueueTimeEvent:build_time," + "com.datadog.profiling.controller.openjdk.events.TimelineEvent:build_time," + "com.datadog.profiling.controller.openjdk.events.SmapEntryEvent:build_time," - + "com.datadog.profiling.controller.openjdk.events.SmapEntryFactory$SmapParseErrorEvent:build_time," - + "com.datadog.profiling.ddprof.JavaProfilerLoader:run_time," + "com.datadoghq.profiler.ThreadContext:run_time," + "com.datadoghq.profiler.BufferWriter:run_time," + "com.datadoghq.profiler.BufferWriter8:run_time," @@ -133,11 +131,13 @@ public static void onEnter(@Advice.Argument(value = 0, readOnly = false) String[ + "datadog.trace.bootstrap.benchmark.StaticEventLogger:build_time," + "datadog.trace.bootstrap.blocking.BlockingExceptionHandler:build_time," + "datadog.trace.bootstrap.InstrumentationErrors:build_time," + + "datadog.trace.bootstrap.instrumentation.java.concurrent.AsyncResultExtensions$CompletableAsyncResultExtension:build_time," + + "datadog.trace.bootstrap.instrumentation.java.concurrent.AsyncResultExtensions$1:build_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.AsyncResultExtensions:build_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.ConcurrentState:build_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter:build_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter$ExcludeType:build_time," - + "datadog.trace.bootstrap.instrumentation.java.concurrent.QueueTimeHelper:build_time," + + "datadog.trace.bootstrap.instrumentation.java.concurrent.QueueTimerHelper:build_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.QueueTimerHelper$RateLimiterHolder:run_time," + "datadog.trace.bootstrap.instrumentation.java.concurrent.TPEHelper:build_time," + "datadog.trace.bootstrap.instrumentation.jfr.exceptions.ExceptionCountEvent:build_time,"