Skip to content

Commit 7154b54

Browse files
author
Andrew Kent
committed
Rename TracerBridge and Provider
1 parent 9f1d22e commit 7154b54

8 files changed

Lines changed: 80 additions & 99 deletions

File tree

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/TracerInstaller.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
package datadog.trace.agent.tooling;
22

33
import datadog.opentracing.DDTracer;
4-
import datadog.trace.context.TracerBridge;
5-
import io.opentracing.util.GlobalTracer;
64
import lombok.extern.slf4j.Slf4j;
75

86
@Slf4j
97
public class TracerInstaller {
108
/** Register a global tracer if no global tracer is already registered. */
119
public static synchronized void installGlobalTracer() {
12-
if (!GlobalTracer.isRegistered()) {
10+
if (!io.opentracing.util.GlobalTracer.isRegistered()) {
1311
final DDTracer tracer = new DDTracer();
1412
try {
15-
GlobalTracer.register(tracer);
16-
TracerBridge.registerIfAbsent(tracer);
13+
io.opentracing.util.GlobalTracer.register(tracer);
14+
datadog.trace.api.GlobalTracer.registerIfAbsent(tracer);
1715
} catch (final RuntimeException re) {
1816
log.warn("Failed to register tracer '" + tracer + "'", re);
1917
}
@@ -24,7 +22,10 @@ public static synchronized void installGlobalTracer() {
2422

2523
public static void logVersionInfo() {
2624
VersionLogger.logAllVersions();
27-
log.debug(GlobalTracer.class.getName() + " loaded on " + GlobalTracer.class.getClassLoader());
25+
log.debug(
26+
io.opentracing.util.GlobalTracer.class.getName()
27+
+ " loaded on "
28+
+ io.opentracing.util.GlobalTracer.class.getClassLoader());
2829
log.debug(
2930
AgentInstaller.class.getName() + " loaded on " + AgentInstaller.class.getClassLoader());
3031
}

dd-java-agent/testing/src/main/java/datadog/trace/agent/test/AgentTestRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import datadog.opentracing.DDTracer;
88
import datadog.trace.agent.tooling.AgentInstaller;
99
import datadog.trace.agent.tooling.Instrumenter;
10+
import datadog.trace.api.GlobalTracer;
1011
import datadog.trace.common.writer.ListWriter;
1112
import datadog.trace.common.writer.Writer;
12-
import datadog.trace.context.TracerBridge;
1313
import io.opentracing.Tracer;
1414
import java.lang.instrument.ClassFileTransformer;
1515
import java.lang.instrument.Instrumentation;
@@ -85,7 +85,7 @@ public boolean add(final List<DDSpan> trace) {
8585
};
8686
TEST_TRACER = new DDTracer(TEST_WRITER);
8787
TestUtils.registerOrReplaceGlobalTracer((Tracer) TEST_TRACER);
88-
TracerBridge.registerIfAbsent((DDTracer) TEST_TRACER);
88+
GlobalTracer.registerIfAbsent((DDTracer) TEST_TRACER);
8989
}
9090

9191
protected static Tracer getTestTracer() {
Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,16 @@
11
package datadog.trace.api;
22

3-
import datadog.trace.context.TracerBridge;
4-
53
/**
64
* Utility class to access the active trace and span ids.
75
*
86
* <p>Intended for use with MDC frameworks.
97
*/
108
public class CorrelationIdentifier {
119
public static String getTraceId() {
12-
return TracerBridge.get().getTraceId();
10+
return GlobalTracer.get().getTraceId();
1311
}
1412

1513
public static String getSpanId() {
16-
return TracerBridge.get().getSpanId();
17-
}
18-
19-
public interface Provider {
20-
String getTraceId();
21-
22-
String getSpanId();
23-
24-
Provider NO_OP =
25-
new Provider() {
26-
@Override
27-
public String getTraceId() {
28-
return "0";
29-
}
30-
31-
@Override
32-
public String getSpanId() {
33-
return "0";
34-
}
35-
};
14+
return GlobalTracer.get().getSpanId();
3615
}
3716
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package datadog.trace.api;
2+
3+
import datadog.trace.api.interceptor.TraceInterceptor;
4+
import java.util.concurrent.atomic.AtomicReference;
5+
6+
/**
7+
* A global reference to the registered Datadog tracer.
8+
*
9+
* <p>OpenTracing's GlobalTracer cannot be cast to its DDTracer implementation, so this class exists
10+
* to provide a global window to datadog-specific features.
11+
*/
12+
public class GlobalTracer {
13+
private static final Tracer NO_OP =
14+
new Tracer() {
15+
@Override
16+
public String getTraceId() {
17+
return "0";
18+
}
19+
20+
@Override
21+
public String getSpanId() {
22+
return "0";
23+
}
24+
25+
@Override
26+
public boolean addTraceInterceptor(TraceInterceptor traceInterceptor) {
27+
return false;
28+
}
29+
};
30+
private static final AtomicReference<Tracer> provider = new AtomicReference<>(NO_OP);
31+
32+
public static void registerIfAbsent(Tracer p) {
33+
if (p != null && p != NO_OP) {
34+
provider.compareAndSet(NO_OP, p);
35+
}
36+
}
37+
38+
public static Tracer get() {
39+
return provider.get();
40+
}
41+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package datadog.trace.api;
2+
3+
import datadog.trace.api.interceptor.TraceInterceptor;
4+
5+
/** A class with Datadog tracer features. */
6+
public interface Tracer {
7+
8+
/** Get the trace id of the active trace. Returns 0 if there is no active trace. */
9+
String getTraceId();
10+
11+
/**
12+
* Get the span id of the active span of the active trace. Returns 0 if there is no active trace.
13+
*/
14+
String getSpanId();
15+
16+
/**
17+
* Add a new interceptor to the tracer. Interceptors with duplicate priority to existing ones are
18+
* ignored.
19+
*
20+
* @param traceInterceptor
21+
* @return false if an interceptor with same priority exists.
22+
*/
23+
boolean addTraceInterceptor(TraceInterceptor traceInterceptor);
24+
}

dd-trace-api/src/main/java/datadog/trace/context/TracerBridge.java

Lines changed: 0 additions & 63 deletions
This file was deleted.

dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import datadog.trace.common.writer.DDAgentWriter;
2424
import datadog.trace.common.writer.DDApi;
2525
import datadog.trace.common.writer.Writer;
26-
import datadog.trace.context.TracerBridge;
2726
import io.opentracing.Scope;
2827
import io.opentracing.ScopeManager;
2928
import io.opentracing.Span;
@@ -49,7 +48,7 @@
4948

5049
/** DDTracer makes it easy to send traces and span to DD using the OpenTracing API. */
5150
@Slf4j
52-
public class DDTracer implements io.opentracing.Tracer, Closeable, TracerBridge.Provider {
51+
public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace.api.Tracer {
5352

5453
public static final String UNASSIGNED_DEFAULT_SERVICE_NAME = "unnamed-java-app";
5554

dd-trace-ot/src/test/groovy/datadog/opentracing/TraceInterceptorTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package datadog.opentracing
33
import datadog.trace.api.interceptor.MutableSpan
44
import datadog.trace.api.interceptor.TraceInterceptor
55
import datadog.trace.common.writer.ListWriter
6-
import datadog.trace.context.TracerBridge
6+
import datadog.trace.api.GlobalTracer
77
import spock.lang.Specification
88

99
import java.util.concurrent.atomic.AtomicBoolean
@@ -147,7 +147,7 @@ class TraceInterceptorTest extends Specification {
147147
148148
def "register interceptor through bridge" () {
149149
setup:
150-
TracerBridge.registerIfAbsent(tracer)
150+
GlobalTracer.registerIfAbsent(tracer)
151151
def interceptor = new TraceInterceptor() {
152152
@Override
153153
Collection<? extends MutableSpan> onTraceComplete(Collection<? extends MutableSpan> trace) {
@@ -161,7 +161,7 @@ class TraceInterceptorTest extends Specification {
161161
}
162162
163163
expect:
164-
TracerBridge.addTraceInterceptor(interceptor)
164+
GlobalTracer.get().addTraceInterceptor(interceptor)
165165
tracer.interceptors.contains(interceptor)
166166
}
167167
}

0 commit comments

Comments
 (0)