Skip to content

Commit f698857

Browse files
mccullsdevflow.devflow-routing-intake
andauthored
Remove AgentTracer.noopContinuation() sentinel (#12004)
Remove AgentTracer.noopContinuation() sentinel Call sites now check continuation.context() == Context.root() instead of comparing against a shared singleton, mirroring ThreadLocalContextManager. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
1 parent 3cdd938 commit f698857

20 files changed

Lines changed: 54 additions & 60 deletions

File tree

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/java/concurrent/Wrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package datadog.trace.bootstrap.instrumentation.java.concurrent;
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
4-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
54
import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE;
65
import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude;
76

7+
import datadog.context.Context;
88
import datadog.context.ContextContinuation;
99
import datadog.context.ContextScope;
1010
import java.util.concurrent.RunnableFuture;
@@ -20,7 +20,7 @@ public static <T extends Runnable> Runnable wrap(T task) {
2020
return task;
2121
}
2222
ContextContinuation continuation = captureActiveSpan();
23-
if (continuation != noopContinuation()) {
23+
if (continuation.context() != Context.root()) {
2424
if (task instanceof Comparable) {
2525
return new ComparableRunnable(task, continuation);
2626
}

dd-java-agent/instrumentation/apache-httpclient/apache-httpasyncclient-4.0/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/TraceContinuedFutureCallback.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package datadog.trace.instrumentation.apachehttpasyncclient;
22

3-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
43
import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE;
54

5+
import datadog.context.Context;
66
import datadog.context.ContextContinuation;
77
import datadog.context.ContextScope;
88
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -33,7 +33,7 @@ public void completed(final T result) {
3333
DECORATE.beforeFinish(clientSpan);
3434
clientSpan.finish(); // Finish span before calling delegate
3535

36-
if (parentContinuation == noopContinuation()) {
36+
if (parentContinuation.context() == Context.root()) {
3737
completeDelegate(result);
3838
} else {
3939
try (final ContextScope scope = parentContinuation.resume()) {
@@ -49,7 +49,7 @@ public void failed(final Exception ex) {
4949
DECORATE.beforeFinish(clientSpan);
5050
clientSpan.finish(); // Finish span before calling delegate
5151

52-
if (parentContinuation == noopContinuation()) {
52+
if (parentContinuation.context() == Context.root()) {
5353
failDelegate(ex);
5454
} else {
5555
try (final ContextScope scope = parentContinuation.resume()) {
@@ -64,7 +64,7 @@ public void cancelled() {
6464
DECORATE.beforeFinish(clientSpan);
6565
clientSpan.finish(); // Finish span before calling delegate
6666

67-
if (parentContinuation == noopContinuation()) {
67+
if (parentContinuation.context() == Context.root()) {
6868
cancelDelegate();
6969
} else {
7070
try (final ContextScope scope = parentContinuation.resume()) {

dd-java-agent/instrumentation/apache-httpclient/apache-httpclient-5.0/src/main/java/datadog/trace/instrumentation/apachehttpclient5/TraceContinuedFutureCallback.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package datadog.trace.instrumentation.apachehttpclient5;
22

3-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
43
import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE;
54

5+
import datadog.context.Context;
66
import datadog.context.ContextContinuation;
77
import datadog.context.ContextScope;
88
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -36,7 +36,7 @@ public void completed(final T result) {
3636
DECORATE.beforeFinish(clientSpan);
3737
clientSpan.finish(); // Finish span before calling delegate
3838

39-
if (parentContinuation == noopContinuation()) {
39+
if (parentContinuation.context() == Context.root()) {
4040
completeDelegate(result);
4141
} else {
4242
try (final ContextScope scope = parentContinuation.resume()) {
@@ -52,7 +52,7 @@ public void failed(final Exception ex) {
5252
DECORATE.beforeFinish(clientSpan);
5353
clientSpan.finish(); // Finish span before calling delegate
5454

55-
if (parentContinuation == noopContinuation()) {
55+
if (parentContinuation.context() == Context.root()) {
5656
failDelegate(ex);
5757
} else {
5858
try (final ContextScope scope = parentContinuation.resume()) {
@@ -67,7 +67,7 @@ public void cancelled() {
6767
DECORATE.beforeFinish(clientSpan);
6868
clientSpan.finish(); // Finish span before calling delegate
6969

70-
if (parentContinuation == noopContinuation()) {
70+
if (parentContinuation.context() == Context.root()) {
7171
cancelDelegate();
7272
} else {
7373
try (final ContextScope scope = parentContinuation.resume()) {

dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-12.0/src/main/java17/datadog/trace/instrumentation/jetty12/JettyRunnableWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package datadog.trace.instrumentation.jetty12;
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
4-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
54
import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE;
65
import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude;
76

7+
import datadog.context.Context;
88
import datadog.context.ContextContinuation;
99
import datadog.context.ContextScope;
1010

@@ -30,7 +30,7 @@ public static Runnable wrapIfNeeded(final Runnable task) {
3030
return task;
3131
}
3232
ContextContinuation continuation = captureActiveSpan();
33-
if (continuation != noopContinuation()) {
33+
if (continuation.context() != Context.root()) {
3434
return new JettyRunnableWrapper(task, continuation);
3535
}
3636
return task; // don't wrap unless there is a scope to propagate

dd-java-agent/instrumentation/mongo/mongo-driver/mongo-driver-4.0/src/main/java/datadog/trace/instrumentation/mongo/CallbackWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package datadog.trace.instrumentation.mongo;
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
4-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
54

65
import com.mongodb.internal.async.SingleResultCallback;
6+
import datadog.context.Context;
77
import datadog.context.ContextContinuation;
88
import datadog.context.ContextScope;
99
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
@@ -56,7 +56,7 @@ private ContextContinuation getAndResetContinuation() {
5656

5757
public static SingleResultCallback<Object> wrapIfRequired(SingleResultCallback<Object> callback) {
5858
ContextContinuation continuation = captureActiveSpan();
59-
if (continuation != noopContinuation()) {
59+
if (continuation.context() != Context.root()) {
6060
return new CallbackWrapper<>(continuation, callback);
6161
}
6262
return callback;

dd-java-agent/instrumentation/netty/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/NettyChannelInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface;
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
6-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
6+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.rootContext;
77
import static datadog.trace.instrumentation.netty38.NettyChannelPipelineInstrumentation.ADDITIONAL_INSTRUMENTATION_NAMES;
88
import static datadog.trace.instrumentation.netty38.NettyChannelPipelineInstrumentation.INSTRUMENTATION_NAME;
99
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@@ -67,7 +67,7 @@ public static class ChannelConnectAdvice extends AbstractNettyAdvice {
6767
@Advice.OnMethodEnter
6868
public static void addConnectContinuation(@Advice.This final Channel channel) {
6969
ContextContinuation continuation = captureActiveSpan();
70-
if (continuation != noopContinuation()) {
70+
if (continuation.context() != rootContext()) {
7171
final ContextStore<Channel, ChannelTraceContext> contextStore =
7272
InstrumentationContext.get(Channel.class, ChannelTraceContext.class);
7373

dd-java-agent/instrumentation/netty/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelPipelineInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
66
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
8-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
8+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.rootContext;
99
import static datadog.trace.instrumentation.netty40.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY;
1010
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
1111
import static net.bytebuddy.matcher.ElementMatchers.returns;
@@ -232,7 +232,7 @@ public static class ConnectAdvice {
232232
@Advice.OnMethodEnter(suppress = Throwable.class)
233233
public static void addParentSpan(@Advice.This final ChannelPipeline pipeline) {
234234
ContextContinuation continuation = captureActiveSpan();
235-
if (continuation != noopContinuation()) {
235+
if (continuation.context() != rootContext()) {
236236
final Attribute<ContextContinuation> attribute =
237237
pipeline.channel().attr(CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY);
238238
if (!attribute.compareAndSet(null, continuation)) {

dd-java-agent/instrumentation/netty/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelPipelineInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
66
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
8-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
8+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.rootContext;
99
import static datadog.trace.instrumentation.netty41.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY;
1010
import static datadog.trace.instrumentation.netty41.AttributeKeys.HTTP2_CONNECTION_CODEC_ATTRIBUTE_KEY;
1111
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@@ -257,7 +257,7 @@ public static class ConnectAdvice {
257257
@Advice.OnMethodEnter(suppress = Throwable.class)
258258
public static boolean addParentSpan(@Advice.This final ChannelPipeline pipeline) {
259259
ContextContinuation continuation = captureActiveSpan();
260-
if (continuation != noopContinuation()) {
260+
if (continuation.context() != rootContext()) {
261261
final Attribute<ContextContinuation> attribute =
262262
pipeline.channel().attr(CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY);
263263
if (!attribute.compareAndSet(null, continuation)) {

dd-java-agent/instrumentation/netty/netty-promise-4.0/src/main/java/datadog/trace/instrumentation/netty4/promise/ListenerWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package datadog.trace.instrumentation.netty4.promise;
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.captureActiveSpan;
4-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation;
54

5+
import datadog.context.Context;
66
import datadog.context.ContextContinuation;
77
import datadog.context.ContextScope;
88
import io.netty.util.concurrent.Future;
@@ -17,7 +17,7 @@ public static GenericFutureListener wrapIfNeeded(final GenericFutureListener lis
1717
return listener;
1818
}
1919
ContextContinuation continuation = captureActiveSpan();
20-
if (continuation == noopContinuation()) {
20+
if (continuation.context() == Context.root()) {
2121
return listener;
2222
}
2323
if (listener instanceof GenericProgressiveFutureListener) {

dd-java-agent/instrumentation/opentracing/opentracing-0.31/src/test/groovy/OpenTracing31Test.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datadog.context.Context
12
import datadog.trace.agent.test.InstrumentationSpecification
23
import datadog.trace.api.DDSpanId
34
import datadog.trace.api.DDTags
@@ -28,7 +29,6 @@ import io.opentracing.util.GlobalTracer
2829
import spock.lang.Subject
2930

3031
import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
31-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation
3232

3333
class OpenTracing31Test extends InstrumentationSpecification {
3434

@@ -165,7 +165,7 @@ class OpenTracing31Test extends InstrumentationSpecification {
165165
span instanceof MutableSpan
166166
scope instanceof TraceScope
167167
!internalTracer.isAsyncPropagationEnabled()
168-
(scope as TraceScope).capture() == noopContinuation()
168+
(scope as TraceScope).capture().context() == Context.root()
169169
(tracer.scopeManager().active().span().delegate == span.delegate)
170170

171171
when:

0 commit comments

Comments
 (0)