Skip to content

Commit 37ca729

Browse files
committed
Add config option.
1 parent 114d230 commit 37ca729

5 files changed

Lines changed: 22 additions & 1 deletion

File tree

dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public final class GeneralConfig {
9494
public static final String AGENTLESS_LOG_SUBMISSION_LEVEL = "agentless.log.submission.level";
9595
public static final String AGENTLESS_LOG_SUBMISSION_URL = "agentless.log.submission.url";
9696
public static final String APM_TRACING_ENABLED = "apm.tracing.enabled";
97+
public static final String JDK_SOCKET_ENABLED = "jdk.socket.enabled";
9798

9899
private GeneralConfig() {}
99100
}

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,8 @@ public static String getHostName() {
557557

558558
private final boolean apmTracingEnabled;
559559

560+
private final boolean jdkSocketEnabled;
561+
560562
// Read order: System Properties -> Env Variables, [-> properties file], [-> default value]
561563
private Config() {
562564
this(ConfigProvider.createDefault());
@@ -1924,6 +1926,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
19241926

19251927
this.apmTracingEnabled = configProvider.getBoolean(GeneralConfig.APM_TRACING_ENABLED, true);
19261928

1929+
this.jdkSocketEnabled = configProvider.getBoolean(JDK_SOCKET_ENABLED, true);
1930+
19271931
log.debug("New instance: {}", this);
19281932
}
19291933

@@ -3466,6 +3470,10 @@ public boolean isApmTracingEnabled() {
34663470
return apmTracingEnabled;
34673471
}
34683472

3473+
public boolean isJdkSocketEnabled() {
3474+
return jdkSocketEnabled;
3475+
}
3476+
34693477
/** @return A map of tags to be applied only to the local application root span. */
34703478
public Map<String, Object> getLocalRootSpanTags() {
34713479
final Map<String, String> runtimeTags = getRuntimeTags();
@@ -4703,6 +4711,8 @@ public String toString() {
47034711
+ dataJobsCommandPattern
47044712
+ ", apmTracingEnabled="
47054713
+ apmTracingEnabled
4714+
+ ", jdkSocketEnabled="
4715+
+ jdkSocketEnabled
47064716
+ ", cloudRequestPayloadTagging="
47074717
+ cloudRequestPayloadTagging
47084718
+ ", cloudResponsePayloadTagging="

internal-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import static datadog.trace.api.config.GeneralConfig.GLOBAL_TAGS
5050
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_ENABLED
5151
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_STATSD_HOST
5252
import static datadog.trace.api.config.GeneralConfig.HEALTH_METRICS_STATSD_PORT
53+
import static datadog.trace.api.config.GeneralConfig.JDK_SOCKET_ENABLED
5354
import static datadog.trace.api.config.GeneralConfig.PERF_METRICS_ENABLED
5455
import static datadog.trace.api.config.GeneralConfig.SERVICE_NAME
5556
import static datadog.trace.api.config.GeneralConfig.SITE
@@ -257,6 +258,7 @@ class ConfigTest extends DDSpecification {
257258
prop.setProperty(DYNAMIC_INSTRUMENTATION_EXCLUDE_FILES, "exclude file")
258259
prop.setProperty(EXCEPTION_REPLAY_ENABLED, "true")
259260
prop.setProperty(TRACE_X_DATADOG_TAGS_MAX_LENGTH, "128")
261+
prop.setProperty(JDK_SOCKET_ENABLED, "false")
260262

261263
when:
262264
Config config = Config.get(prop)
@@ -348,6 +350,7 @@ class ConfigTest extends DDSpecification {
348350
config.dynamicInstrumentationInstrumentTheWorld == true
349351
config.dynamicInstrumentationExcludeFiles == "exclude file"
350352
config.debuggerExceptionEnabled == true
353+
config.jdkSocketEnabled == false
351354

352355
config.xDatadogTagsMaxLength == 128
353356
}

utils/socket-utils/src/main/java/datadog/common/socket/UnixDomainSocketFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public UnixDomainSocketFactory(final File path) {
3838
@Override
3939
public Socket createSocket() throws IOException {
4040
try {
41-
if (JDK_SUPPORTS_UDS) {
41+
if (JDK_SUPPORTS_UDS && Config.get().isJdkSocketEnabled()) {
4242
try {
4343
return new TunnelingJdkSocket(path.toPath());
4444
} catch (Throwable ignore) {

utils/socket-utils/src/test/java/datadog/common/socket/TunnelingJdkSocketTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
44
import static org.junit.jupiter.api.Assertions.fail;
55

6+
import datadog.trace.api.Config;
67
import java.io.IOException;
78
import java.net.InetSocketAddress;
89
import java.net.StandardProtocolFamily;
@@ -21,6 +22,12 @@ public class TunnelingJdkSocketTest {
2122

2223
@Test
2324
public void testTimeout() throws Exception {
25+
if (!Config.get().isJdkSocketEnabled()) {
26+
System.out.println(
27+
"TunnelingJdkSocket usage is disabled. Enable it by setting the property 'JDK_SOCKET_ENABLED' to 'true'.");
28+
return;
29+
}
30+
2431
int testTimeout = 3000;
2532
Path socketPath = getSocketPath();
2633
UnixDomainSocketAddress socketAddress = UnixDomainSocketAddress.of(socketPath);

0 commit comments

Comments
 (0)