Register TracerBridge in TracerInstaller instead of DDTracer init
This commit is contained in:
parent
e565205d77
commit
9f1d22ea6b
|
@ -1,7 +1,7 @@
|
||||||
package datadog.trace.agent.tooling;
|
package datadog.trace.agent.tooling;
|
||||||
|
|
||||||
import datadog.opentracing.DDTracer;
|
import datadog.opentracing.DDTracer;
|
||||||
import io.opentracing.Tracer;
|
import datadog.trace.context.TracerBridge;
|
||||||
import io.opentracing.util.GlobalTracer;
|
import io.opentracing.util.GlobalTracer;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
@ -10,11 +10,12 @@ public class TracerInstaller {
|
||||||
/** Register a global tracer if no global tracer is already registered. */
|
/** Register a global tracer if no global tracer is already registered. */
|
||||||
public static synchronized void installGlobalTracer() {
|
public static synchronized void installGlobalTracer() {
|
||||||
if (!GlobalTracer.isRegistered()) {
|
if (!GlobalTracer.isRegistered()) {
|
||||||
final Tracer resolved = new DDTracer();
|
final DDTracer tracer = new DDTracer();
|
||||||
try {
|
try {
|
||||||
GlobalTracer.register(resolved);
|
GlobalTracer.register(tracer);
|
||||||
|
TracerBridge.registerIfAbsent(tracer);
|
||||||
} catch (final RuntimeException re) {
|
} catch (final RuntimeException re) {
|
||||||
log.warn("Failed to register tracer '" + resolved + "'", re);
|
log.warn("Failed to register tracer '" + tracer + "'", re);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.debug("GlobalTracer already registered.");
|
log.debug("GlobalTracer already registered.");
|
||||||
|
|
|
@ -9,6 +9,7 @@ import datadog.trace.agent.tooling.AgentInstaller;
|
||||||
import datadog.trace.agent.tooling.Instrumenter;
|
import datadog.trace.agent.tooling.Instrumenter;
|
||||||
import datadog.trace.common.writer.ListWriter;
|
import datadog.trace.common.writer.ListWriter;
|
||||||
import datadog.trace.common.writer.Writer;
|
import datadog.trace.common.writer.Writer;
|
||||||
|
import datadog.trace.context.TracerBridge;
|
||||||
import io.opentracing.Tracer;
|
import io.opentracing.Tracer;
|
||||||
import java.lang.instrument.ClassFileTransformer;
|
import java.lang.instrument.ClassFileTransformer;
|
||||||
import java.lang.instrument.Instrumentation;
|
import java.lang.instrument.Instrumentation;
|
||||||
|
@ -84,6 +85,7 @@ public abstract class AgentTestRunner extends Specification {
|
||||||
};
|
};
|
||||||
TEST_TRACER = new DDTracer(TEST_WRITER);
|
TEST_TRACER = new DDTracer(TEST_WRITER);
|
||||||
TestUtils.registerOrReplaceGlobalTracer((Tracer) TEST_TRACER);
|
TestUtils.registerOrReplaceGlobalTracer((Tracer) TEST_TRACER);
|
||||||
|
TracerBridge.registerIfAbsent((DDTracer) TEST_TRACER);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static Tracer getTestTracer() {
|
protected static Tracer getTestTracer() {
|
||||||
|
|
|
@ -162,8 +162,6 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, TracerBridge.
|
||||||
addDecorator(decorator);
|
addDecorator(decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
TracerBridge.registerIfAbsent(this);
|
|
||||||
|
|
||||||
log.info("New instance: {}", this);
|
log.info("New instance: {}", this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ class TraceInterceptorTest extends Specification {
|
||||||
|
|
||||||
def "register interceptor through bridge" () {
|
def "register interceptor through bridge" () {
|
||||||
setup:
|
setup:
|
||||||
|
TracerBridge.registerIfAbsent(tracer)
|
||||||
def interceptor = new TraceInterceptor() {
|
def interceptor = new TraceInterceptor() {
|
||||||
@Override
|
@Override
|
||||||
Collection<? extends MutableSpan> onTraceComplete(Collection<? extends MutableSpan> trace) {
|
Collection<? extends MutableSpan> onTraceComplete(Collection<? extends MutableSpan> trace) {
|
||||||
|
@ -161,5 +162,6 @@ class TraceInterceptorTest extends Specification {
|
||||||
|
|
||||||
expect:
|
expect:
|
||||||
TracerBridge.addTraceInterceptor(interceptor)
|
TracerBridge.addTraceInterceptor(interceptor)
|
||||||
|
tracer.interceptors.contains(interceptor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue