diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java index 2600fe9f49..130c21a8cd 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/ContinuationInstrumentation.java @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.ratpack; import static datadog.trace.agent.tooling.ByteBuddyElementMatchers.safeHasSuperType; +import static datadog.trace.instrumentation.api.AgentTracer.activeSpan; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import io.opentracing.util.GlobalTracer; import java.util.Map; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -46,7 +46,7 @@ public final class ContinuationInstrumentation extends Instrumenter.Default { @Advice.OnMethodEnter(suppress = Throwable.class) public static void wrap(@Advice.Argument(value = 0, readOnly = false) Block block) { - block = BlockWrapper.wrapIfNeeded(block, GlobalTracer.get().activeSpan()); + block = BlockWrapper.wrapIfNeeded(block, activeSpan()); } public void muzzleCheck(final PathBinding binding) { diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/DefaultExecutionInstrumentation.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/DefaultExecutionInstrumentation.java index a2d59bc293..2747ecc132 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/DefaultExecutionInstrumentation.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java/datadog/trace/instrumentation/ratpack/DefaultExecutionInstrumentation.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.ratpack; +import static datadog.trace.instrumentation.api.AgentTracer.activeSpan; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; @@ -7,8 +8,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import io.opentracing.Span; -import io.opentracing.util.GlobalTracer; +import datadog.trace.instrumentation.api.AgentSpan; import java.util.Map; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -56,7 +56,7 @@ public final class DefaultExecutionInstrumentation extends Instrumenter.Default * Here we pass along the span instead of a continuation because we aren't sure the callback * will actually be called. */ - final Span span = GlobalTracer.get().activeSpan(); + final AgentSpan span = activeSpan(); onError = ActionWrapper.wrapIfNeeded(onError, span); segment = ActionWrapper.wrapIfNeeded(segment, span); } diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ActionWrapper.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ActionWrapper.java index ffd62209fc..d118c64a1f 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ActionWrapper.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ActionWrapper.java @@ -1,18 +1,18 @@ package datadog.trace.instrumentation.ratpack; -import datadog.trace.context.TraceScope; -import io.opentracing.Scope; -import io.opentracing.Span; -import io.opentracing.util.GlobalTracer; +import static datadog.trace.instrumentation.api.AgentTracer.activateSpan; + +import datadog.trace.instrumentation.api.AgentScope; +import datadog.trace.instrumentation.api.AgentSpan; import lombok.extern.slf4j.Slf4j; import ratpack.func.Action; @Slf4j public class ActionWrapper implements Action { private final Action delegate; - private final Span span; + private final AgentSpan span; - private ActionWrapper(final Action delegate, final Span span) { + private ActionWrapper(final Action delegate, final AgentSpan span) { assert span != null; this.delegate = delegate; this.span = span; @@ -20,15 +20,13 @@ public class ActionWrapper implements Action { @Override public void execute(final T t) throws Exception { - try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, false)) { - if (scope instanceof TraceScope) { - ((TraceScope) scope).setAsyncPropagation(true); - } + try (final AgentScope scope = activateSpan(span, false)) { + scope.setAsyncPropagation(true); delegate.execute(t); } } - public static Action wrapIfNeeded(final Action delegate, final Span span) { + public static Action wrapIfNeeded(final Action delegate, final AgentSpan span) { if (delegate instanceof ActionWrapper || span == null) { return delegate; } diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/BlockWrapper.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/BlockWrapper.java index 4803af1242..3d61d444b0 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/BlockWrapper.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/BlockWrapper.java @@ -1,18 +1,18 @@ package datadog.trace.instrumentation.ratpack; -import datadog.trace.context.TraceScope; -import io.opentracing.Scope; -import io.opentracing.Span; -import io.opentracing.util.GlobalTracer; +import static datadog.trace.instrumentation.api.AgentTracer.activateSpan; + +import datadog.trace.instrumentation.api.AgentScope; +import datadog.trace.instrumentation.api.AgentSpan; import lombok.extern.slf4j.Slf4j; import ratpack.func.Block; @Slf4j public class BlockWrapper implements Block { private final Block delegate; - private final Span span; + private final AgentSpan span; - private BlockWrapper(final Block delegate, final Span span) { + private BlockWrapper(final Block delegate, final AgentSpan span) { assert span != null; this.delegate = delegate; this.span = span; @@ -20,15 +20,13 @@ public class BlockWrapper implements Block { @Override public void execute() throws Exception { - try (final Scope scope = GlobalTracer.get().scopeManager().activate(span, false)) { - if (scope instanceof TraceScope) { - ((TraceScope) scope).setAsyncPropagation(true); - } + try (final AgentScope scope = activateSpan(span, false)) { + scope.setAsyncPropagation(true); delegate.execute(); } } - public static Block wrapIfNeeded(final Block delegate, final Span span) { + public static Block wrapIfNeeded(final Block delegate, final AgentSpan span) { if (delegate instanceof BlockWrapper || span == null) { return delegate; } diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ErrorHandlerAdvice.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ErrorHandlerAdvice.java index 55d13dbaf2..b79d7927b7 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ErrorHandlerAdvice.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/ErrorHandlerAdvice.java @@ -1,17 +1,18 @@ package datadog.trace.instrumentation.ratpack; -import static datadog.trace.instrumentation.ratpack.RatpackServerDecorator.DECORATE; - -import io.opentracing.Span; import java.util.Optional; + +import datadog.trace.instrumentation.api.AgentSpan; import net.bytebuddy.asm.Advice; import ratpack.handling.Context; +import static datadog.trace.instrumentation.ratpack.RatpackServerDecorator.DECORATE; + public class ErrorHandlerAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static void captureThrowable( @Advice.Argument(0) final Context ctx, @Advice.Argument(1) final Throwable throwable) { - final Optional span = ctx.maybeGet(Span.class); + final Optional span = ctx.maybeGet(AgentSpan.class); if (span.isPresent()) { DECORATE.onError(span.get(), throwable); } diff --git a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/RatpackServerDecorator.java b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/RatpackServerDecorator.java index fdc6e9479b..f72d002c8d 100644 --- a/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/RatpackServerDecorator.java +++ b/dd-java-agent/instrumentation/ratpack-1.4/src/main/java8/datadog/trace/instrumentation/ratpack/RatpackServerDecorator.java @@ -3,7 +3,7 @@ package datadog.trace.instrumentation.ratpack; import com.google.common.net.HostAndPort; import datadog.trace.agent.decorator.HttpServerDecorator; import datadog.trace.api.DDTags; -import io.opentracing.Span; +import datadog.trace.instrumentation.api.AgentSpan; import java.net.URI; import lombok.extern.slf4j.Slf4j; import ratpack.handling.Context; @@ -70,7 +70,7 @@ public class RatpackServerDecorator extends HttpServerDecorator SERVER_ATTRIBUTE_KEY = + public static final AttributeKey SERVER_ATTRIBUTE_KEY = AttributeKey.valueOf( "datadog.trace.instrumentation.netty41.server.HttpServerTracingHandler.span"); @Override public void handle(final Context ctx) { - final Tracer tracer = GlobalTracer.get(); final Request request = ctx.getRequest(); - final Attribute spanAttribute = + final Attribute spanAttribute = ctx.getDirectChannelAccess().getChannel().attr(SERVER_ATTRIBUTE_KEY); - final Span nettySpan = spanAttribute.get(); + final AgentSpan nettySpan = spanAttribute.get(); // Relying on executor instrumentation to assume the netty span is in context as the parent. - final Span ratpackSpan = tracer.buildSpan("ratpack.handler").start(); + final AgentSpan ratpackSpan = startSpan("ratpack.handler"); DECORATE.afterStart(ratpackSpan); DECORATE.onConnection(ratpackSpan, request); DECORATE.onRequest(ratpackSpan, request); ctx.getExecution().add(ratpackSpan); - try (final Scope scope = tracer.scopeManager().activate(ratpackSpan, false)) { - if (scope instanceof TraceScope) { - ((TraceScope) scope).setAsyncPropagation(true); - } + try (final AgentScope scope = activateSpan(ratpackSpan, false)) { + scope.setAsyncPropagation(true); ctx.getResponse() .beforeSend( response -> { - try (final Scope ignored = tracer.scopeManager().activate(ratpackSpan, false)) { + try (final AgentScope ignored = activateSpan(ratpackSpan, false)) { if (nettySpan != null) { // Rename the netty span resource name with the ratpack route. DECORATE.onContext(nettySpan, ctx);