Skip to content

Commit 2bc6c39

Browse files
committed
feat(core): Extract and refactor span and scope implementations from tracer
Add dedicated noop methods for span, span context and scope Remove unused eligibleForDropping method Improve Javadoc
1 parent 173439c commit 2bc6c39

File tree

45 files changed

+949
-788
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+949
-788
lines changed

Diff for: dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/java/concurrent/ConcurrentState.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import datadog.trace.bootstrap.ContextStore;
66
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
7-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
87
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
98
import org.slf4j.Logger;
109
import org.slf4j.LoggerFactory;
@@ -32,7 +31,7 @@ private ConcurrentState() {}
3231
public static <K> ConcurrentState captureScope(
3332
ContextStore<K, ConcurrentState> contextStore, K key, AgentScope scope) {
3433
if (scope != null && scope.isAsyncPropagating()) {
35-
if (scope.span() instanceof AgentTracer.NoopAgentSpan) {
34+
if (!scope.span().isValid()) {
3635
return null;
3736
}
3837
final ConcurrentState state = contextStore.putIfAbsent(key, FACTORY);

Diff for: dd-java-agent/instrumentation/akka-concurrent/src/main/java/datadog/trace/instrumentation/akka/concurrent/AkkaActorCellInstrumentation.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
7+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
78
import static java.util.Collections.singletonMap;
89
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
910

@@ -13,7 +14,6 @@
1314
import datadog.trace.agent.tooling.InstrumenterModule;
1415
import datadog.trace.bootstrap.InstrumentationContext;
1516
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
16-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
1717
import datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils;
1818
import datadog.trace.bootstrap.instrumentation.java.concurrent.State;
1919
import java.util.Map;
@@ -72,11 +72,11 @@ public static AgentScope enter(
7272
return null;
7373
}
7474
// If there is a noop span in the active scope, we can clean all the way to this scope
75-
if (activeSpan() instanceof AgentTracer.NoopAgentSpan) {
75+
if (activeSpan() == noopSpan()) {
7676
return activeScope;
7777
}
7878
// Create an active scope with a noop span, and clean all the way to the previous scope
79-
localScope = activateSpan(AgentTracer.NoopAgentSpan.INSTANCE, false);
79+
localScope = activateSpan(noopSpan(), false);
8080
return activeScope;
8181
}
8282

Diff for: dd-java-agent/instrumentation/akka-concurrent/src/main/java/datadog/trace/instrumentation/akka/concurrent/AkkaMailboxInstrumentation.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
7+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
78
import static java.util.Collections.singletonList;
89
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
910

@@ -12,7 +13,6 @@
1213
import datadog.trace.agent.tooling.Instrumenter;
1314
import datadog.trace.agent.tooling.InstrumenterModule;
1415
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
15-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
1616
import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter;
1717
import java.util.Collection;
1818
import java.util.EnumMap;
@@ -69,11 +69,11 @@ public static AgentScope enter() {
6969
return null;
7070
}
7171
// If there is a noop span in the active scope, we can clean all the way to this scope
72-
if (activeSpan() instanceof AgentTracer.NoopAgentSpan) {
72+
if (activeSpan() == noopSpan()) {
7373
return activeScope;
7474
}
7575
// Create an active scope with a noop span, and clean all the way to the previous scope
76-
activateSpan(AgentTracer.NoopAgentSpan.INSTANCE, false);
76+
activateSpan(noopSpan(), false);
7777
return activeScope;
7878
}
7979

Diff for: dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AWSHttpClientInstrumentation.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import datadog.trace.agent.tooling.Instrumenter;
1313
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1414
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
15-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
1615
import net.bytebuddy.asm.Advice;
1716

1817
/**
@@ -50,7 +49,7 @@ public static void methodExit(
5049
// check name in case TracingRequestHandler failed to activate the span
5150
if (scope != null
5251
&& (AwsNameCache.spanName(request).equals(scope.span().getSpanName())
53-
|| scope.span() instanceof AgentTracer.NoopAgentSpan)) {
52+
|| !scope.span().isValid())) {
5453
scope.close();
5554
}
5655

Diff for: dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/RequestExecutorInstrumentation.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import datadog.trace.agent.tooling.Instrumenter;
1111
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1212
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
13-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
1413
import net.bytebuddy.asm.Advice;
1514

1615
/**
@@ -47,7 +46,7 @@ public static void methodExit(
4746
// check name in case TracingRequestHandler failed to activate the span
4847
if (scope != null
4948
&& (AwsNameCache.spanName(request).equals(scope.span().getSpanName())
50-
|| scope.span() instanceof AgentTracer.NoopAgentSpan)) {
49+
|| !scope.span().isValid())) {
5150
scope.close();
5251
}
5352

Diff for: dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsHttpClientInstrumentation.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import datadog.trace.agent.tooling.Instrumenter;
1616
import datadog.trace.agent.tooling.InstrumenterModule;
1717
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
18-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
1918
import net.bytebuddy.asm.Advice;
2019
import net.bytebuddy.description.type.TypeDescription;
2120
import net.bytebuddy.matcher.ElementMatcher;
@@ -76,7 +75,7 @@ public static AgentScope methodEnter(
7675
final AgentScope scope = activeScope();
7776
// check name in case TracingExecutionInterceptor failed to activate the span
7877
if (scope != null
79-
&& (scope.span() instanceof AgentTracer.NoopAgentSpan
78+
&& ((!scope.span().isValid())
8079
|| AwsSdkClientDecorator.DECORATE
8180
.spanName(requestExecutionContext.executionAttributes())
8281
.equals(scope.span().getSpanName()))) {

Diff for: dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/NettyChannelHandlerContextInstrumentation.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
8+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope;
89
import static datadog.trace.instrumentation.netty40.AttributeKeys.SPAN_ATTRIBUTE_KEY;
910
import static datadog.trace.instrumentation.netty40.NettyChannelPipelineInstrumentation.ADDITIONAL_INSTRUMENTATION_NAMES;
1011
import static datadog.trace.instrumentation.netty40.NettyChannelPipelineInstrumentation.INSTRUMENTATION_NAME;
@@ -16,7 +17,6 @@
1617
import datadog.trace.agent.tooling.InstrumenterModule;
1718
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1819
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
19-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
2020
import datadog.trace.instrumentation.netty40.client.NettyHttpClientDecorator;
2121
import datadog.trace.instrumentation.netty40.server.NettyHttpServerDecorator;
2222
import io.netty.channel.ChannelHandlerContext;
@@ -72,7 +72,7 @@ public static AgentScope scopeSpan(@Advice.This final ChannelHandlerContext ctx)
7272
final AgentSpan channelSpan = ctx.channel().attr(SPAN_ATTRIBUTE_KEY).get();
7373
if (channelSpan == null || channelSpan == activeSpan()) {
7474
// don't modify the scope
75-
return AgentTracer.NoopAgentScope.INSTANCE;
75+
return noopScope();
7676
}
7777
return activateSpan(channelSpan);
7878
}

Diff for: dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/NettyChannelHandlerContextInstrumentation.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
8+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope;
89
import static datadog.trace.instrumentation.netty41.AttributeKeys.SPAN_ATTRIBUTE_KEY;
910
import static datadog.trace.instrumentation.netty41.NettyChannelPipelineInstrumentation.ADDITIONAL_INSTRUMENTATION_NAMES;
1011
import static datadog.trace.instrumentation.netty41.NettyChannelPipelineInstrumentation.INSTRUMENTATION_NAME;
@@ -16,7 +17,6 @@
1617
import datadog.trace.agent.tooling.InstrumenterModule;
1718
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1819
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
19-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
2020
import datadog.trace.instrumentation.netty41.client.NettyHttpClientDecorator;
2121
import datadog.trace.instrumentation.netty41.server.NettyHttpServerDecorator;
2222
import io.netty.channel.ChannelHandlerContext;
@@ -72,7 +72,7 @@ public static AgentScope scopeSpan(@Advice.This final ChannelHandlerContext ctx)
7272
final AgentSpan channelSpan = ctx.channel().attr(SPAN_ATTRIBUTE_KEY).get();
7373
if (channelSpan == null || channelSpan == activeSpan()) {
7474
// don't modify the scope
75-
return AgentTracer.NoopAgentScope.INSTANCE;
75+
return noopScope();
7676
}
7777
return activateSpan(channelSpan);
7878
}

Diff for: dd-java-agent/instrumentation/okhttp-2/src/test/groovy/OkHttp2AsyncTest.groovy

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentTracer
77
import java.util.concurrent.CountDownLatch
88
import java.util.concurrent.atomic.AtomicReference
99

10+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan
1011
import static java.util.concurrent.TimeUnit.SECONDS
1112

1213
abstract class OkHttp2AsyncTest extends OkHttp2Test {
@@ -52,7 +53,7 @@ abstract class OkHttp2AsyncTest extends OkHttp2Test {
5253
def "callbacks should carry context with error = #error" () {
5354

5455
when:
55-
def captured = AgentTracer.noopSpan()
56+
def captured = noopSpan()
5657
try {
5758
TraceUtils.runUnderTrace("parent", {
5859
doRequest(method, url, ["Datadog-Meta-Lang": "java"], "", { captured = AgentTracer.activeSpan() })

Diff for: dd-java-agent/instrumentation/okhttp-3/src/test/groovy/OkHttp3AsyncTest.groovy

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import okhttp3.internal.http.HttpMethod
1313
import java.util.concurrent.CountDownLatch
1414
import java.util.concurrent.atomic.AtomicReference
1515

16+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan
1617
import static java.util.concurrent.TimeUnit.SECONDS
1718

1819
abstract class OkHttp3AsyncTest extends OkHttp3Test {
@@ -52,7 +53,7 @@ abstract class OkHttp3AsyncTest extends OkHttp3Test {
5253
def "callbacks should carry context with error = #error" () {
5354

5455
when:
55-
def captured = AgentTracer.noopSpan()
56+
def captured = noopSpan()
5657
try {
5758
TraceUtils.runUnderTrace("parent", {
5859
doRequest(method, url, ["Datadog-Meta-Lang": "java"], "", { captured = AgentTracer.activeSpan() })

Diff for: dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/TypeConverter.java

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package datadog.trace.instrumentation.opentelemetry;
22

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope;
4+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
5+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext;
6+
37
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
48
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
59
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
6-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
710
import datadog.trace.bootstrap.instrumentation.api.AttachableWrapper;
811
import io.opentelemetry.context.Scope;
912
import io.opentelemetry.trace.Span;
@@ -16,16 +19,16 @@ public class TypeConverter {
1619
private final OtelScope noopScopeWrapper;
1720

1821
public TypeConverter() {
19-
noopSpanWrapper = new OtelSpan(AgentTracer.NoopAgentSpan.INSTANCE, this);
20-
noopContextWrapper = new OtelSpanContext(AgentTracer.NoopContext.INSTANCE);
21-
noopScopeWrapper = new OtelScope(AgentTracer.NoopAgentScope.INSTANCE);
22+
noopSpanWrapper = new OtelSpan(noopSpan(), this);
23+
noopContextWrapper = new OtelSpanContext(noopSpanContext());
24+
noopScopeWrapper = new OtelScope(noopScope());
2225
}
2326

2427
public AgentSpan toAgentSpan(final Span span) {
2528
if (span instanceof OtelSpan) {
2629
return ((OtelSpan) span).asAgentSpan();
2730
}
28-
return null == span ? null : AgentTracer.NoopAgentSpan.INSTANCE;
31+
return null == span ? null : noopSpan();
2932
}
3033

3134
public Span toSpan(final AgentSpan agentSpan) {
@@ -42,7 +45,7 @@ public Span toSpan(final AgentSpan agentSpan) {
4245
attachableSpanWrapper.attachWrapper(spanWrapper);
4346
return spanWrapper;
4447
}
45-
if (agentSpan == AgentTracer.NoopAgentSpan.INSTANCE) {
48+
if (agentSpan == noopSpan()) {
4649
return noopSpanWrapper;
4750
}
4851
return new OtelSpan(agentSpan, this);
@@ -62,7 +65,7 @@ public Scope toScope(final AgentScope scope) {
6265
attachableScopeWrapper.attachWrapper(otScope);
6366
return otScope;
6467
}
65-
if (scope == AgentTracer.NoopAgentScope.INSTANCE) {
68+
if (scope == noopScope()) {
6669
return noopScopeWrapper;
6770
}
6871
return new OtelScope(scope);
@@ -73,7 +76,7 @@ public SpanContext toSpanContext(final AgentSpanContext context) {
7376
return null;
7477
}
7578
// avoid a new SpanContext wrapper allocation for the noop context
76-
if (context == AgentTracer.NoopContext.INSTANCE) {
79+
if (context == noopSpanContext()) {
7780
return noopContextWrapper;
7881
}
7982
return new OtelSpanContext(context);
@@ -83,6 +86,6 @@ public AgentSpanContext toContext(final SpanContext spanContext) {
8386
if (spanContext instanceof OtelSpanContext) {
8487
return ((OtelSpanContext) spanContext).getDelegate();
8588
}
86-
return null == spanContext ? null : AgentTracer.NoopContext.INSTANCE;
89+
return null == spanContext ? null : noopSpanContext();
8790
}
8891
}

Diff for: dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import datadog.trace.agent.test.AgentTestRunner
22
import datadog.trace.api.DDSpanId
33
import datadog.trace.api.DDTraceId
44
import datadog.trace.api.sampling.PrioritySampling
5-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer
65
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext
76
import datadog.trace.bootstrap.instrumentation.api.ScopeSource
87
import datadog.trace.core.DDSpan
@@ -12,11 +11,15 @@ import datadog.trace.core.propagation.PropagationTags
1211
import datadog.trace.core.scopemanager.ContinuableScopeManager
1312
import datadog.trace.instrumentation.opentelemetry.TypeConverter
1413

14+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope
15+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext
16+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan
17+
1518
class TypeConverterTest extends AgentTestRunner {
1619
TypeConverter typeConverter = new TypeConverter()
1720

1821
def "should avoid the noop span wrapper allocation"() {
19-
def noopAgentSpan = AgentTracer.NoopAgentSpan.INSTANCE
22+
def noopAgentSpan = noopSpan()
2023
expect:
2124
typeConverter.toSpan(noopAgentSpan) is typeConverter.toSpan(noopAgentSpan)
2225
}
@@ -33,13 +36,13 @@ class TypeConverterTest extends AgentTestRunner {
3336
}
3437

3538
def "should avoid the noop context wrapper allocation"() {
36-
def noopContext = AgentTracer.NoopContext.INSTANCE
39+
def noopContext = noopSpanContext()
3740
expect:
3841
typeConverter.toSpanContext(noopContext) is typeConverter.toSpanContext(noopContext)
3942
}
4043

4144
def "should avoid the noop scope wrapper allocation"() {
42-
def noopScope = AgentTracer.NoopAgentScope.INSTANCE
45+
def noopScope = noopScope()
4346
expect:
4447
typeConverter.toScope(noopScope) is typeConverter.toScope(noopScope)
4548
}

Diff for: dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/TypeConverter.java

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package datadog.trace.instrumentation.opentracing31;
22

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope;
4+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan;
5+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext;
6+
37
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
48
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
59
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
6-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
710
import datadog.trace.bootstrap.instrumentation.api.AttachableWrapper;
811
import datadog.trace.instrumentation.opentracing.LogHandler;
912
import io.opentracing.Scope;
@@ -19,16 +22,16 @@ public class TypeConverter {
1922

2023
public TypeConverter(final LogHandler logHandler) {
2124
this.logHandler = logHandler;
22-
noopSpanWrapper = new OTSpan(AgentTracer.NoopAgentSpan.INSTANCE, this, logHandler);
23-
noopContextWrapper = new OTSpanContext(AgentTracer.NoopContext.INSTANCE);
24-
noopScopeWrapper = new OTScopeManager.OTScope(AgentTracer.NoopAgentScope.INSTANCE, false, this);
25+
noopSpanWrapper = new OTSpan(noopSpan(), this, logHandler);
26+
noopContextWrapper = new OTSpanContext(noopSpanContext());
27+
noopScopeWrapper = new OTScopeManager.OTScope(noopScope(), false, this);
2528
}
2629

2730
public AgentSpan toAgentSpan(final Span span) {
2831
if (span instanceof OTSpan) {
2932
return ((OTSpan) span).asAgentSpan();
3033
}
31-
return null == span ? null : AgentTracer.NoopAgentSpan.INSTANCE;
34+
return null == span ? null : noopSpan();
3235
}
3336

3437
public OTSpan toSpan(final AgentSpan agentSpan) {
@@ -45,7 +48,7 @@ public OTSpan toSpan(final AgentSpan agentSpan) {
4548
attachableSpanWrapper.attachWrapper(spanWrapper);
4649
return spanWrapper;
4750
}
48-
if (agentSpan == AgentTracer.NoopAgentSpan.INSTANCE) {
51+
if (agentSpan == noopSpan()) {
4952
return noopSpanWrapper;
5053
}
5154
return new OTSpan(agentSpan, this, logHandler);
@@ -68,7 +71,7 @@ public Scope toScope(final AgentScope scope, final boolean finishSpanOnClose) {
6871
attachableScopeWrapper.attachWrapper(otScope);
6972
return otScope;
7073
}
71-
if (scope == AgentTracer.NoopAgentScope.INSTANCE) {
74+
if (scope == noopScope()) {
7275
return noopScopeWrapper;
7376
}
7477
return new OTScopeManager.OTScope(scope, finishSpanOnClose, this);
@@ -79,7 +82,7 @@ public SpanContext toSpanContext(final AgentSpanContext context) {
7982
return null;
8083
}
8184
// avoid a new SpanContext wrapper allocation for the noop context
82-
if (context == AgentTracer.NoopContext.INSTANCE) {
85+
if (context == noopSpanContext()) {
8386
return noopContextWrapper;
8487
}
8588
return new OTSpanContext(context);
@@ -89,6 +92,6 @@ public AgentSpanContext toContext(final SpanContext spanContext) {
8992
if (spanContext instanceof OTSpanContext) {
9093
return ((OTSpanContext) spanContext).getDelegate();
9194
}
92-
return null == spanContext ? null : AgentTracer.NoopContext.INSTANCE;
95+
return null == spanContext ? null : noopSpanContext();
9396
}
9497
}

0 commit comments

Comments
 (0)