From c62a400971bf7ccbef0e82d8b4315aa75cb59ceb Mon Sep 17 00:00:00 2001 From: jean-philippe bempel Date: Mon, 15 Dec 2025 17:15:57 +0100 Subject: [PATCH] Enable Code Origin by default for JDK25+ Add tests for ensuring enablement by JDK version --- .../debugger/origin/CodeOriginConfigTest.java | 43 +++++++++++++++++++ .../main/java/datadog/trace/api/Config.java | 11 ++++- 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginConfigTest.java diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginConfigTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginConfigTest.java new file mode 100644 index 00000000000..c90686d8a09 --- /dev/null +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginConfigTest.java @@ -0,0 +1,43 @@ +package com.datadog.debugger.origin; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import datadog.trace.api.Config; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledForJreRange; +import org.junit.jupiter.api.condition.EnabledOnJre; +import org.junit.jupiter.api.condition.JRE; + +public class CodeOriginConfigTest { + + @EnabledForJreRange(min = JRE.JAVA_25) + @Test + public void defaultConfigJDK25() { + assertTrue(Config.get().isDebuggerCodeOriginEnabled()); + } + + @EnabledOnJre(JRE.JAVA_21) + @Test + public void defaultConfigJDK21() { + assertFalse(Config.get().isDebuggerCodeOriginEnabled()); + } + + @EnabledOnJre(JRE.JAVA_17) + @Test + public void defaultConfigJDK17() { + assertFalse(Config.get().isDebuggerCodeOriginEnabled()); + } + + @EnabledOnJre(JRE.JAVA_11) + @Test + public void defaultConfigJDK11() { + assertFalse(Config.get().isDebuggerCodeOriginEnabled()); + } + + @EnabledOnJre(JRE.JAVA_8) + @Test + public void defaultConfigJDK8() { + assertFalse(Config.get().isDebuggerCodeOriginEnabled()); + } +} diff --git a/internal-api/src/main/java/datadog/trace/api/Config.java b/internal-api/src/main/java/datadog/trace/api/Config.java index 502bad37e4b..212a2daaef9 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -40,7 +40,6 @@ import static datadog.trace.api.ConfigDefaults.DEFAULT_CIVISIBILITY_SOURCE_DATA_ENABLED; import static datadog.trace.api.ConfigDefaults.DEFAULT_CLIENT_IP_ENABLED; import static datadog.trace.api.ConfigDefaults.DEFAULT_CLOCK_SYNC_PERIOD; -import static datadog.trace.api.ConfigDefaults.DEFAULT_CODE_ORIGIN_FOR_SPANS_ENABLED; import static datadog.trace.api.ConfigDefaults.DEFAULT_CODE_ORIGIN_MAX_USER_FRAMES; import static datadog.trace.api.ConfigDefaults.DEFAULT_COUCHBASE_INTERNAL_SPANS_ENABLED; import static datadog.trace.api.ConfigDefaults.DEFAULT_CWS_ENABLED; @@ -2597,7 +2596,7 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) EXCEPTION_REPLAY_ENABLED); debuggerCodeOriginEnabled = configProvider.getBoolean( - CODE_ORIGIN_FOR_SPANS_ENABLED, DEFAULT_CODE_ORIGIN_FOR_SPANS_ENABLED); + CODE_ORIGIN_FOR_SPANS_ENABLED, getDefaultCodeOriginForSpanEnabled()); debuggerCodeOriginMaxUserFrames = configProvider.getInteger(CODE_ORIGIN_MAX_USER_FRAMES, DEFAULT_CODE_ORIGIN_MAX_USER_FRAMES); debuggerMaxExceptionPerSecond = @@ -2978,6 +2977,14 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) log.debug("New instance: {}", this); } + private boolean getDefaultCodeOriginForSpanEnabled() { + if (JavaVirtualMachine.isJavaVersionAtLeast(25)) { + // activate by default Code Origin only for JDK25+ + return true; + } + return false; + } + private static boolean isValidUrl(String url) { if (url == null || url.isEmpty()) { return false;