From 25e06b496501e1e8613254e6748426f2a1012e6a Mon Sep 17 00:00:00 2001 From: Luca Abbati Date: Fri, 24 May 2019 17:42:06 +0200 Subject: [PATCH 1/2] Make spring controller spans to handle async --- .../springweb/HandlerAdapterInstrumentation.java | 4 ++++ .../src/main/java/datadog/trace/context/TraceScope.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java b/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java index b9881a993e..8ada084ccc 100644 --- a/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-web/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java @@ -14,6 +14,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.context.TraceScope; import io.opentracing.Scope; import io.opentracing.util.GlobalTracer; import java.lang.reflect.Method; @@ -107,6 +108,9 @@ public final class HandlerAdapterInstrumentation extends Instrumenter.Default { final String operationName = DECORATE.spanNameForClass(clazz) + "." + methodName; final Scope scope = GlobalTracer.get().buildSpan(operationName).startActive(true); + if (scope instanceof TraceScope) { + ((TraceScope) scope).setAsyncPropagation(true); + } DECORATE.afterStart(scope); return scope; } diff --git a/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java b/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java index 709301d8fb..1b3542a87b 100644 --- a/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java +++ b/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java @@ -2,7 +2,7 @@ package datadog.trace.context; import java.io.Closeable; -/** An object when can propagate a datadog trace across multiple threads. */ +/** An object that can propagate a datadog trace across multiple threads. */ public interface TraceScope extends Closeable { /** * Prevent the trace attached to this TraceScope from reporting until the returned Continuation From 35cd97b2ad2704bac8dcb680ac945c98f18aa814 Mon Sep 17 00:00:00 2001 From: Luca Abbati Date: Fri, 24 May 2019 17:43:42 +0200 Subject: [PATCH 2/2] Make spring controller spans to handle async (followup) --- .../src/main/java/datadog/trace/context/TraceScope.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java b/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java index 1b3542a87b..709301d8fb 100644 --- a/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java +++ b/dd-trace-api/src/main/java/datadog/trace/context/TraceScope.java @@ -2,7 +2,7 @@ package datadog.trace.context; import java.io.Closeable; -/** An object that can propagate a datadog trace across multiple threads. */ +/** An object when can propagate a datadog trace across multiple threads. */ public interface TraceScope extends Closeable { /** * Prevent the trace attached to this TraceScope from reporting until the returned Continuation