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 3471750c347..3d81035b6a8 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -3283,7 +3283,9 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) TRACE_LONG_RUNNING_FLUSH_INTERVAL, DEFAULT_TRACE_LONG_RUNNING_FLUSH_INTERVAL); serviceDiscoveryEnabled = configProvider.getBoolean( - TRACE_SERVICE_DISCOVERY_ENABLED, DEFAULT_SERVICE_DISCOVERY_ENABLED); + TRACE_SERVICE_DISCOVERY_ENABLED, + DEFAULT_SERVICE_DISCOVERY_ENABLED + && !(isCiVisibilityEnabled() && ciVisibilityAgentlessEnabled)); if (longRunningEnabled && (longRunningTraceInitialFlushInterval < 10 diff --git a/internal-api/src/test/java/datadog/trace/api/ConfigTest.java b/internal-api/src/test/java/datadog/trace/api/ConfigTest.java index bbea22a73fa..b82e1aa6769 100644 --- a/internal-api/src/test/java/datadog/trace/api/ConfigTest.java +++ b/internal-api/src/test/java/datadog/trace/api/ConfigTest.java @@ -164,6 +164,7 @@ import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLE_RATE; import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_OPERATION_RULES; import static datadog.trace.api.config.TracerConfig.TRACE_SAMPLING_SERVICE_RULES; +import static datadog.trace.api.config.TracerConfig.TRACE_SERVICE_DISCOVERY_ENABLED; import static datadog.trace.api.config.TracerConfig.TRACE_X_DATADOG_TAGS_MAX_LENGTH; import static datadog.trace.api.config.TracerConfig.WRITER_TYPE; import static datadog.trace.api.env.FixedCapturedEnvironment.useFixedEnv; @@ -3115,6 +3116,34 @@ void configInstantiationShouldNotFailIfCiVisibilityAgentlessModeIsEnabledAndApiK assertTrue(config.isCiVisibilityAgentlessEnabled()); } + @TableTest({ + "scenario | ciVisibility | agentless | serviceDiscovery | expected", + "default | false | false | | true ", + "CI Visibility with agent | true | false | | true ", + "CI Visibility agentless | true | true | | false ", + "explicitly enabled override | true | true | true | true " + }) + @ParameterizedTest(name = "[{index}] {0}") + void serviceDiscoveryIsDisabledInCiVisibilityAgentlessMode( + String scenario, + boolean ciVisibility, + boolean agentless, + String serviceDiscovery, + boolean expected) + throws Exception { + Properties properties = new Properties(); + properties.setProperty(CIVISIBILITY_ENABLED, String.valueOf(ciVisibility)); + properties.setProperty(CIVISIBILITY_AGENTLESS_ENABLED, String.valueOf(agentless)); + properties.setProperty(API_KEY, "123456789"); + if (serviceDiscovery != null) { + properties.setProperty(TRACE_SERVICE_DISCOVERY_ENABLED, serviceDiscovery); + } + + Config config = newConfig(withPropertiesOverride(properties)); + + assertEquals(expected, config.isServiceDiscoveryEnabled()); + } + @TableTest({ "scenario | configuredBuckets | expectedBuckets", "'5,4,3,2,1' | '5,4,3,2,1' | [5, 4, 3, 2, 1]",