Skip to content

Commit 324f9f2

Browse files
committed
Revert "Avoid performing blocking I/O operation on application thread (#8120)"
This reverts commit 8d5f5ac.
1 parent a3e9bda commit 324f9f2

File tree

4 files changed

+24
-44
lines changed

4 files changed

+24
-44
lines changed

communication/src/main/java/datadog/communication/ddagent/SharedCommunicationObjects.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package datadog.communication.ddagent;
22

33
import static datadog.communication.ddagent.TracerVersion.TRACER_VERSION;
4-
import static datadog.trace.util.AgentThreadFactory.AGENT_THREAD_GROUP;
54

65
import datadog.common.container.ContainerInfo;
76
import datadog.common.socket.SocketUtils;
@@ -10,7 +9,6 @@
109
import datadog.remoteconfig.ConfigurationPoller;
1110
import datadog.remoteconfig.DefaultConfigurationPoller;
1211
import datadog.trace.api.Config;
13-
import datadog.trace.util.AgentTaskScheduler;
1412
import java.util.concurrent.TimeUnit;
1513
import java.util.function.Supplier;
1614
import okhttp3.HttpUrl;
@@ -100,11 +98,8 @@ public DDAgentFeaturesDiscovery featuresDiscovery(Config config) {
10098
agentUrl,
10199
config.isTraceAgentV05Enabled(),
102100
config.isTracerMetricsEnabled());
103-
if (AGENT_THREAD_GROUP.equals(Thread.currentThread().getThreadGroup())) {
104-
featuresDiscovery.discover(); // safe to run on same thread
105-
} else {
106-
// avoid performing blocking I/O operation on application thread
107-
AgentTaskScheduler.INSTANCE.execute(featuresDiscovery::discover);
101+
if (!"true".equalsIgnoreCase(System.getProperty("dd.test.no.early.discovery"))) {
102+
featuresDiscovery.discover();
108103
}
109104
}
110105
return featuresDiscovery;

dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/agent/DebuggerAgentTest.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,11 @@ public void runEnabledWithDatadogAgent() throws InterruptedException, IOExceptio
122122
ConfigurationPoller configurationPoller =
123123
(ConfigurationPoller) sharedCommunicationObjects.configurationPoller(Config.get());
124124
configurationPoller.start();
125-
RecordedRequest request;
126-
do {
127-
request = datadogAgentServer.takeRequest(5, TimeUnit.SECONDS);
128-
assertNotNull(request);
129-
} while ("/info".equals(request.getPath()));
125+
RecordedRequest request = datadogAgentServer.takeRequest(5, TimeUnit.SECONDS);
126+
assertNotNull(request);
127+
assertEquals("/info", request.getPath());
128+
request = datadogAgentServer.takeRequest(5, TimeUnit.SECONDS);
129+
assertNotNull(request);
130130
assertEquals("/v0.7/config", request.getPath());
131131
DebuggerAgent.stop();
132132
datadogAgentServer.shutdown();

dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java

+14-16
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,21 @@ public DefaultDataStreamsMonitoring(
136136

137137
@Override
138138
public void start() {
139+
if (features.getDataStreamsEndpoint() == null) {
140+
features.discoverIfOutdated();
141+
}
142+
143+
agentSupportsDataStreams = features.supportsDataStreams();
139144
checkDynamicConfig();
145+
146+
if (!configSupportsDataStreams) {
147+
log.debug("Data streams is disabled");
148+
} else if (!agentSupportsDataStreams) {
149+
log.debug("Data streams is disabled or not supported by agent");
150+
}
151+
152+
nextFeatureCheck = timeSource.getCurrentTimeNanos() + FEATURE_CHECK_INTERVAL_NANOS;
153+
140154
cancellation =
141155
AgentTaskScheduler.INSTANCE.scheduleAtFixedRate(
142156
new ReportTask(), this, bucketDurationNanos, bucketDurationNanos, TimeUnit.NANOSECONDS);
@@ -327,22 +341,6 @@ private StatsBucket getStatsBucket(final long timestamp, final String serviceNam
327341

328342
@Override
329343
public void run() {
330-
331-
if (features.getDataStreamsEndpoint() == null) {
332-
features.discoverIfOutdated();
333-
}
334-
335-
agentSupportsDataStreams = features.supportsDataStreams();
336-
checkDynamicConfig();
337-
338-
if (!configSupportsDataStreams) {
339-
log.debug("Data streams is disabled");
340-
} else if (!agentSupportsDataStreams) {
341-
log.debug("Data streams is disabled or not supported by agent");
342-
}
343-
344-
nextFeatureCheck = timeSource.getCurrentTimeNanos() + FEATURE_CHECK_INTERVAL_NANOS;
345-
346344
Thread currentThread = Thread.currentThread();
347345
while (!currentThread.isInterrupted()) {
348346
try {

dd-trace-core/src/test/groovy/datadog/trace/core/propagation/XRayHttpInjectorTest.groovy

+3-16
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import datadog.trace.api.DDTraceId
66
import datadog.trace.api.DynamicConfig
77
import datadog.trace.api.time.TimeSource
88
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext
9-
import datadog.trace.core.datastreams.DataStreamsMonitoring
109

1110
import static datadog.trace.api.sampling.PrioritySampling.*
1211
import static datadog.trace.api.sampling.SamplingMechanism.*
@@ -26,11 +25,7 @@ class XRayHttpInjectorTest extends DDCoreSpecification {
2625
setup:
2726
def writer = new ListWriter()
2827
def timeSource = Mock(TimeSource)
29-
def tracer = tracerBuilder()
30-
.dataStreamsMonitoring(Mock(DataStreamsMonitoring))
31-
.writer(writer)
32-
.timeSource(timeSource)
33-
.build()
28+
def tracer = tracerBuilder().writer(writer).timeSource(timeSource).build()
3429
final DDSpanContext mockedContext =
3530
new DDSpanContext(
3631
DDTraceId.from("$traceId"),
@@ -81,11 +76,7 @@ class XRayHttpInjectorTest extends DDCoreSpecification {
8176
setup:
8277
def writer = new ListWriter()
8378
def timeSource = Mock(TimeSource)
84-
def tracer = tracerBuilder()
85-
.dataStreamsMonitoring(Mock(DataStreamsMonitoring))
86-
.writer(writer)
87-
.timeSource(timeSource)
88-
.build()
79+
def tracer = tracerBuilder().writer(writer).timeSource(timeSource).build()
8980
def headers = [
9081
'X-Amzn-Trace-Id' : "Root=1-00000000-00000000${traceId.padLeft(16, '0')};Parent=${spanId.padLeft(16, '0')}"
9182
]
@@ -145,11 +136,7 @@ class XRayHttpInjectorTest extends DDCoreSpecification {
145136
setup:
146137
def writer = new ListWriter()
147138
def timeSource = Mock(TimeSource)
148-
def tracer = tracerBuilder()
149-
.dataStreamsMonitoring(Mock(DataStreamsMonitoring))
150-
.writer(writer)
151-
.timeSource(timeSource)
152-
.build()
139+
def tracer = tracerBuilder().writer(writer).timeSource(timeSource).build()
153140
final DDSpanContext mockedContext =
154141
new DDSpanContext(
155142
DDTraceId.from("1"),

0 commit comments

Comments
 (0)