From 1ef67e57aa597501a9ab12f9b94f36524d393fc6 Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Thu, 28 Nov 2024 13:59:12 +0000 Subject: [PATCH] Fold setAsyncPropagation into preceding activateSpan (#8032) --- .../trace/civisibility/domain/TestImpl.java | 3 +-- .../trace/civisibility/domain/TestSuiteImpl.java | 3 +-- .../akka-concurrent/src/test/java/LinearTask.java | 4 +--- .../akkahttp/DatadogWrapperHelper.java | 4 +--- .../finatra/FinatraInstrumentation.java | 4 +--- .../GrizzlyHttpHandlerInstrumentation.java | 3 +-- .../grizzlyhttp232/FilterAdvice.java | 15 +++++---------- .../grizzlyhttp232/GrizzlyDecorator.java | 3 +-- .../v2/cache/IgniteCacheAsyncInstrumentation.java | 8 ++------ .../DefaultRequestContextInstrumentation.java | 3 +-- .../JakartaRsAnnotationsInstrumentation.java | 3 +-- .../jakarta3/RequestFilterHelper.java | 3 +-- .../recursive/RecursiveThreadPoolExecution.java | 3 +-- ...siveThreadPoolMixedSubmissionAndExecution.java | 3 +-- .../recursive/RecursiveThreadPoolSubmission.java | 3 +-- .../src/test/java/forkjoin/LinearTask.java | 4 +--- .../jaxrs1/JaxRsAnnotationsInstrumentation.java | 4 +--- .../DefaultRequestContextInstrumentation.java | 3 +-- .../jaxrs2/JaxRsAnnotationsInstrumentation.java | 3 +-- .../jaxrs2/RequestFilterHelper.java | 3 +-- .../jdbc/DataSourceInstrumentation.java | 4 +--- .../jetty11/JettyServerAdvice.java | 3 +-- .../jetty12/JettyServerAdvice.java | 3 +-- .../jetty70/JettyServerInstrumentation.java | 3 +-- .../jetty76/JettyServerInstrumentation.java | 3 +-- .../jetty9/JettyServerInstrumentation.java | 3 +-- .../instrumentation/jetty10/HandleAdvice.java | 3 +-- .../kafka_clients/KafkaProducerCallback.java | 3 +-- .../kafka_clients38/KafkaProducerCallback.java | 3 +-- .../liberty20/LibertyServerInstrumentation.java | 3 +-- .../liberty23/LibertyServerInstrumentation.java | 3 +-- .../client/HttpClientResponseTracingHandler.java | 6 ++---- .../server/HttpServerRequestTracingHandler.java | 7 ++----- .../client/HttpClientResponseTracingHandler.java | 9 +++------ .../server/HttpServerRequestTracingHandler.java | 7 ++----- .../client/HttpClientResponseTracingHandler.java | 9 +++------ .../server/HttpServerRequestTracingHandler.java | 7 ++----- .../opentelemetry/annotations/WithSpanAdvice.java | 4 +--- .../pekkohttp/DatadogWrapperHelper.java | 4 +--- .../trace/instrumentation/play23/PlayAdvice.java | 3 +-- .../trace/instrumentation/play24/PlayAdvice.java | 3 +-- .../trace/instrumentation/play26/PlayAdvice.java | 3 +-- .../instrumentation/ratpack/ActionWrapper.java | 3 +-- .../instrumentation/ratpack/BlockWrapper.java | 3 +-- .../instrumentation/ratpack/TracingHandler.java | 3 +-- .../instrumentation/rxjava/TracedSubscriber.java | 12 ++++-------- .../src/test/java/LinearTask.java | 4 +--- .../instrumentation/servlet2/Servlet2Advice.java | 3 +-- .../instrumentation/servlet3/Servlet3Advice.java | 3 +-- .../RequestDispatcherInstrumentation.java | 4 +--- .../servlet/filter/FilterInstrumentation.java | 4 +--- .../servlet/http/HttpServletInstrumentation.java | 4 +--- .../http/HttpServletResponseInstrumentation.java | 4 +--- .../SprayHttpServerRunSealedRouteAdvice.java | 5 ++--- .../springdata/RepositoryInterceptor.java | 3 +-- .../springscheduling/SpannedMethodInvocation.java | 3 +-- .../SpringSchedulingRunnableWrapper.java | 3 +-- .../server/HandlerAdapterAdvice.java | 3 +-- .../springweb/HandlerAdapterInstrumentation.java | 4 +--- .../springweb6/ControllerAdvice.java | 4 +--- .../tomcat/TomcatServerInstrumentation.java | 3 +-- .../twilio/TwilioAsyncInstrumentation.java | 4 +--- .../undertow/HandlerInstrumentation.java | 3 +-- .../vertx_3_4/server/RouteHandlerWrapper.java | 3 +-- .../vertx_4_0/server/RouteHandlerWrapper.java | 3 +-- 65 files changed, 82 insertions(+), 184 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java index 45cacd63965..9479fe3c0e9 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java @@ -98,8 +98,7 @@ public TestImpl( span = spanBuilder.start(); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + activateSpan(span, true); span.setSpanType(InternalSpanTypes.TEST); span.setTag(Tags.SPAN_KIND, Tags.SPAN_KIND_TEST); diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java index e7596f1334b..fb546111375 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java @@ -121,8 +121,7 @@ public TestSuiteImpl( testDecorator.afterStart(span); if (!parallelized) { - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + activateSpan(span, true); } metricCollector.add(CiVisibilityCountMetric.EVENT_CREATED, 1, instrumentation, EventType.SUITE); diff --git a/dd-java-agent/instrumentation/akka-concurrent/src/test/java/LinearTask.java b/dd-java-agent/instrumentation/akka-concurrent/src/test/java/LinearTask.java index 9850c5daefc..3f52dc3610d 100644 --- a/dd-java-agent/instrumentation/akka-concurrent/src/test/java/LinearTask.java +++ b/dd-java-agent/instrumentation/akka-concurrent/src/test/java/LinearTask.java @@ -32,9 +32,7 @@ protected Integer compute() { } else { int next = parent + 1; AgentSpan span = startSpan(Integer.toString(next)); - try (AgentScope scope = activateSpan(span)) { - // shouldn't be necessary with a decent API - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { LinearTask child = new LinearTask(next, depth); return child.fork().join(); } finally { diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/DatadogWrapperHelper.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/DatadogWrapperHelper.java index 7bc82034f4d..1717189e1b2 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/DatadogWrapperHelper.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/DatadogWrapperHelper.java @@ -15,9 +15,7 @@ public static AgentScope createSpan(final HttpRequest request) { DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } public static void finishSpan(final AgentSpan span, final HttpResponse response) { diff --git a/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java b/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java index 1bbb8bf416c..7e1ff85b1fd 100644 --- a/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java +++ b/dd-java-agent/instrumentation/finatra-2.9/src/main/java/datadog/trace/instrumentation/finatra/FinatraInstrumentation.java @@ -76,9 +76,7 @@ public static AgentScope nameSpan( DECORATE.afterStart(span); span.setResourceName(DECORATE.className(clazz)); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/grizzly-2/src/main/java/datadog/trace/instrumentation/grizzly/GrizzlyHttpHandlerInstrumentation.java b/dd-java-agent/instrumentation/grizzly-2/src/main/java/datadog/trace/instrumentation/grizzly/GrizzlyHttpHandlerInstrumentation.java index 2755a658781..e3a24ba69e9 100644 --- a/dd-java-agent/instrumentation/grizzly-2/src/main/java/datadog/trace/instrumentation/grizzly/GrizzlyHttpHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/grizzly-2/src/main/java/datadog/trace/instrumentation/grizzly/GrizzlyHttpHandlerInstrumentation.java @@ -78,8 +78,7 @@ public static class HandleAdvice { DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, parentContext); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); request.setAttribute(DD_SPAN_ATTRIBUTE, span); request.setAttribute(CorrelationIdentifier.getTraceIdKey(), GlobalTracer.get().getTraceId()); diff --git a/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/FilterAdvice.java b/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/FilterAdvice.java index 5fefa67984e..147439794db 100644 --- a/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/FilterAdvice.java +++ b/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/FilterAdvice.java @@ -7,27 +7,22 @@ import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import net.bytebuddy.asm.Advice; -import org.glassfish.grizzly.filterchain.BaseFilter; import org.glassfish.grizzly.filterchain.FilterChainContext; public class FilterAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) - public static AgentScope onEnter( - @Advice.This BaseFilter it, @Advice.Argument(0) final FilterChainContext ctx) { - if (ctx.getAttributes().getAttribute(DD_SPAN_ATTRIBUTE) == null || activeSpan() != null) { + public static AgentScope onEnter(@Advice.Argument(0) final FilterChainContext ctx) { + Object span = ctx.getAttributes().getAttribute(DD_SPAN_ATTRIBUTE); + if (span == null || activeSpan() != null) { return null; } - AgentScope scope = - activateSpan((AgentSpan) ctx.getAttributes().getAttribute(DD_SPAN_ATTRIBUTE)); - scope.setAsyncPropagation(true); - return scope; + return activateSpan((AgentSpan) span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) - public static void onExit(@Advice.This BaseFilter it, @Advice.Enter final AgentScope scope) { + public static void onExit(@Advice.Enter final AgentScope scope) { if (scope != null) { - scope.setAsyncPropagation(false); scope.close(); } } diff --git a/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/GrizzlyDecorator.java b/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/GrizzlyDecorator.java index 0d2978953ab..f80d2291d5a 100644 --- a/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/GrizzlyDecorator.java +++ b/dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/GrizzlyDecorator.java @@ -115,8 +115,7 @@ public static NextAction onHttpCodecFilterExit( HttpResponsePacket httpResponse = httpRequest.getResponse(); AgentSpan.Context.Extracted context = DECORATE.extract(httpRequest); AgentSpan span = DECORATE.startSpan(httpRequest, context); - AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); ctx.getAttributes().setAttribute(DD_SPAN_ATTRIBUTE, span); ctx.getAttributes().setAttribute(DD_RESPONSE_ATTRIBUTE, httpResponse); diff --git a/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/IgniteCacheAsyncInstrumentation.java b/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/IgniteCacheAsyncInstrumentation.java index 6446768028d..4f2de9b112d 100644 --- a/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/IgniteCacheAsyncInstrumentation.java +++ b/dd-java-agent/instrumentation/ignite-2.0/src/main/java/datadog/trace/instrumentation/ignite/v2/cache/IgniteCacheAsyncInstrumentation.java @@ -91,11 +91,9 @@ public static AgentScope onEnter( span, InstrumentationContext.get(IgniteCache.class, Ignite.class).get(that)); DECORATE.onOperation(span, that.getName(), methodName); - final AgentScope scope = activateSpan(span); // Enable async propagation, so the newly spawned task will be associated back with this // original trace. - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) @@ -149,11 +147,9 @@ public static AgentScope onEnter( span, InstrumentationContext.get(IgniteCache.class, Ignite.class).get(that)); DECORATE.onOperation(span, that.getName(), methodName, key); - final AgentScope scope = activateSpan(span); // Enable async propagation, so the newly spawned task will be associated back with this // original trace. - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/DefaultRequestContextInstrumentation.java b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/DefaultRequestContextInstrumentation.java index 7dd07d0b7f3..69fa219a1e4 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/DefaultRequestContextInstrumentation.java +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/DefaultRequestContextInstrumentation.java @@ -47,8 +47,7 @@ public static AgentScope createGenericSpan(@Advice.This final ContainerRequestCo // can only be aborted inside the filter method } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onJakartaRsSpan(span, parent, filterClass, method); diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/JakartaRsAnnotationsInstrumentation.java b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/JakartaRsAnnotationsInstrumentation.java index 7fda891b023..7e7d2fb3a0c 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/JakartaRsAnnotationsInstrumentation.java +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/JakartaRsAnnotationsInstrumentation.java @@ -123,8 +123,7 @@ public static AgentScope nameSpan( DECORATE.onJakartaRsSpan(span, parent, target.getClass(), method); DECORATE.afterStart(span); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); if (contextStore != null && asyncResponse != null) { contextStore.put(asyncResponse, span); diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/RequestFilterHelper.java b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/RequestFilterHelper.java index 594b69d02a0..27486963cd7 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/RequestFilterHelper.java +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/main/java/datadog/trace/instrumentation/jakarta3/RequestFilterHelper.java @@ -28,8 +28,7 @@ public static AgentScope createOrUpdateAbortSpan( parent = activeSpan(); span = startSpan(JAKARTA_RS_REQUEST_ABORT); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onJakartaRsSpan(span, parent, resourceClass, method); diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java index f02b42956ba..1fe45976ae1 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java @@ -26,8 +26,7 @@ public void run() { return; } AgentSpan span = startSpan(String.valueOf(depth)); - try (AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { executor.execute(new RecursiveThreadPoolExecution(executor, maxDepth, depth + 1)); } finally { span.finish(); diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java index 0dbcb4c6871..0c7acae3da2 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java @@ -27,8 +27,7 @@ public void run() { return; } AgentSpan span = startSpan(String.valueOf(depth)); - try (AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { if (depth % 2 == 0) { executor.submit( new RecursiveThreadPoolMixedSubmissionAndExecution(executor, maxDepth, depth + 1)); diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java index e49c50eea67..33904ba2e38 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java @@ -26,8 +26,7 @@ public void run() { return; } AgentSpan span = startSpan(String.valueOf(depth)); - try (AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { executor.submit(new RecursiveThreadPoolSubmission(executor, maxDepth, depth + 1)); } finally { span.finish(); diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java index 5bcc09dacec..0697ee5ba48 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java @@ -34,9 +34,7 @@ protected Integer compute() { } else { int next = parent + 1; AgentSpan span = startSpan(Integer.toString(next)); - try (AgentScope scope = activateSpan(span)) { - // shouldn't be necessary with a decent API - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { LinearTask child = new LinearTask(next, depth); return child.fork().join(); } finally { diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/main/java/datadog/trace/instrumentation/jaxrs1/JaxRsAnnotationsInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/main/java/datadog/trace/instrumentation/jaxrs1/JaxRsAnnotationsInstrumentation.java index dabd2218610..a0780800097 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/main/java/datadog/trace/instrumentation/jaxrs1/JaxRsAnnotationsInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/main/java/datadog/trace/instrumentation/jaxrs1/JaxRsAnnotationsInstrumentation.java @@ -100,9 +100,7 @@ public static AgentScope nameSpan( DECORATE.onJaxRsSpan(span, parent, target.getClass(), method); DECORATE.afterStart(span); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/DefaultRequestContextInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/DefaultRequestContextInstrumentation.java index 8c69ab0a95f..4354cef7baa 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/DefaultRequestContextInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/DefaultRequestContextInstrumentation.java @@ -47,8 +47,7 @@ public static AgentScope createGenericSpan(@Advice.This final ContainerRequestCo // can only be aborted inside the filter method } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onJaxRsSpan(span, parent, filterClass, method); diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAnnotationsInstrumentation.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAnnotationsInstrumentation.java index 8467c310a1a..9a9bfb74ce3 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAnnotationsInstrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/JaxRsAnnotationsInstrumentation.java @@ -131,8 +131,7 @@ public static AgentScope nameSpan( DECORATE.onJaxRsSpan(span, parent, target.getClass(), method); DECORATE.afterStart(span); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); if (contextStore != null && asyncResponse != null) { contextStore.put(asyncResponse, span); diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/RequestFilterHelper.java b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/RequestFilterHelper.java index 00a57be3c89..d452eb7e741 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/RequestFilterHelper.java +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/main/java/datadog/trace/instrumentation/jaxrs2/RequestFilterHelper.java @@ -27,8 +27,7 @@ public static AgentScope createOrUpdateAbortSpan( parent = activeSpan(); span = startSpan(JAX_RS_REQUEST_ABORT); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onJaxRsSpan(span, parent, resourceClass, method); diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java index 96d41750400..d5d85cb395f 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/DataSourceInstrumentation.java @@ -67,9 +67,7 @@ public static AgentScope start(@Advice.This final DataSource ds) { span.setResourceName(DECORATE.spanNameForMethod(ds.getClass(), "getConnection")); - final AgentScope agentScope = activateSpan(span); - agentScope.setAsyncPropagation(true); - return agentScope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/jetty-11/src/main/java11/datadog/trace/instrumentation/jetty11/JettyServerAdvice.java b/dd-java-agent/instrumentation/jetty-11/src/main/java11/datadog/trace/instrumentation/jetty11/JettyServerAdvice.java index f5899f56e3f..72e2444e7c5 100644 --- a/dd-java-agent/instrumentation/jetty-11/src/main/java11/datadog/trace/instrumentation/jetty11/JettyServerAdvice.java +++ b/dd-java-agent/instrumentation/jetty-11/src/main/java11/datadog/trace/instrumentation/jetty11/JettyServerAdvice.java @@ -27,8 +27,7 @@ public static AgentScope onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(req); span = DECORATE.startSpan(req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); span.setMeasured(true); DECORATE.afterStart(span); DECORATE.onRequest(span, req, req, extractedContext); diff --git a/dd-java-agent/instrumentation/jetty-12/src/main/java17/datadog/trace/instrumentation/jetty12/JettyServerAdvice.java b/dd-java-agent/instrumentation/jetty-12/src/main/java17/datadog/trace/instrumentation/jetty12/JettyServerAdvice.java index 44d4e00cb7a..a6f8f462c58 100644 --- a/dd-java-agent/instrumentation/jetty-12/src/main/java17/datadog/trace/instrumentation/jetty12/JettyServerAdvice.java +++ b/dd-java-agent/instrumentation/jetty-12/src/main/java17/datadog/trace/instrumentation/jetty12/JettyServerAdvice.java @@ -29,8 +29,7 @@ public static void onExit( final AgentSpan.Context.Extracted extractedContext = JettyDecorator.DECORATE.extract(req); final AgentSpan span = JettyDecorator.DECORATE.startSpan(req, extractedContext); - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { span.setMeasured(true); JettyDecorator.DECORATE.afterStart(span); JettyDecorator.DECORATE.onRequest(span, req, req, extractedContext); diff --git a/dd-java-agent/instrumentation/jetty-7.0/src/main/java/datadog/trace/instrumentation/jetty70/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty-7.0/src/main/java/datadog/trace/instrumentation/jetty70/JettyServerInstrumentation.java index d6276e5c340..f65d25d2f86 100644 --- a/dd-java-agent/instrumentation/jetty-7.0/src/main/java/datadog/trace/instrumentation/jetty70/JettyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty-7.0/src/main/java/datadog/trace/instrumentation/jetty70/JettyServerInstrumentation.java @@ -155,8 +155,7 @@ public static AgentScope onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(req); span = DECORATE.startSpan(req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, req, req, extractedContext); diff --git a/dd-java-agent/instrumentation/jetty-7.6/src/main/java/datadog/trace/instrumentation/jetty76/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty-7.6/src/main/java/datadog/trace/instrumentation/jetty76/JettyServerInstrumentation.java index 3775c48a79b..1961ff9e671 100644 --- a/dd-java-agent/instrumentation/jetty-7.6/src/main/java/datadog/trace/instrumentation/jetty76/JettyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty-7.6/src/main/java/datadog/trace/instrumentation/jetty76/JettyServerInstrumentation.java @@ -156,8 +156,7 @@ public static AgentScope onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(req); span = DECORATE.startSpan(req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, req, req, extractedContext); diff --git a/dd-java-agent/instrumentation/jetty-9/src/main/java/datadog/trace/instrumentation/jetty9/JettyServerInstrumentation.java b/dd-java-agent/instrumentation/jetty-9/src/main/java/datadog/trace/instrumentation/jetty9/JettyServerInstrumentation.java index f18928f9cb2..f4cd564861d 100644 --- a/dd-java-agent/instrumentation/jetty-9/src/main/java/datadog/trace/instrumentation/jetty9/JettyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty-9/src/main/java/datadog/trace/instrumentation/jetty9/JettyServerInstrumentation.java @@ -169,8 +169,7 @@ public static AgentScope onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(req); span = DECORATE.startSpan(req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, req, req, extractedContext); diff --git a/dd-java-agent/instrumentation/jetty-9/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java b/dd-java-agent/instrumentation/jetty-9/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java index b6554d3c7c1..e9e851da803 100644 --- a/dd-java-agent/instrumentation/jetty-9/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java +++ b/dd-java-agent/instrumentation/jetty-9/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/HandleAdvice.java @@ -29,8 +29,7 @@ public static AgentScope onEnter( DECORATE.afterStart(span); DECORATE.onRequest(span, req, req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); req.setAttribute(DD_SPAN_ATTRIBUTE, span); req.setAttribute(CorrelationIdentifier.getTraceIdKey(), GlobalTracer.get().getTraceId()); req.setAttribute(CorrelationIdentifier.getSpanIdKey(), GlobalTracer.get().getSpanId()); diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerCallback.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerCallback.java index b7479f82da1..623b4639faa 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerCallback.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerCallback.java @@ -39,8 +39,7 @@ public void onCompletion(final RecordMetadata metadata, final Exception exceptio span.finish(); if (callback != null) { if (parent != null) { - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { callback.onCompletion(metadata, exception); } } else { diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/KafkaProducerCallback.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/KafkaProducerCallback.java index d2575af5a2d..9b8edfbebfd 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/KafkaProducerCallback.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/KafkaProducerCallback.java @@ -38,8 +38,7 @@ public void onCompletion(final RecordMetadata metadata, final Exception exceptio span.finish(); if (callback != null) { if (parent != null) { - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { callback.onCompletion(metadata, exception); } } else { diff --git a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java index fe2d0bb1343..eac3a358f2a 100644 --- a/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/liberty-20/src/main/java/datadog/trace/instrumentation/liberty20/LibertyServerInstrumentation.java @@ -103,8 +103,7 @@ public static class HandleRequestAdvice { final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(request); request.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext); final AgentSpan span = DECORATE.startSpan(request, extractedContext); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); diff --git a/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java b/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java index 050cd760020..3209bbed508 100644 --- a/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java +++ b/dd-java-agent/instrumentation/liberty-23/src/main/java/datadog/trace/instrumentation/liberty23/LibertyServerInstrumentation.java @@ -105,8 +105,7 @@ public static class HandleRequestAdvice { final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(request); request.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext); final AgentSpan span = DECORATE.startSpan(request, extractedContext); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientResponseTracingHandler.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientResponseTracingHandler.java index 9a002e22023..911a2665c02 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientResponseTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientResponseTracingHandler.java @@ -48,8 +48,7 @@ public void messageReceived(final ChannelHandlerContext ctx, final MessageEvent } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { ctx.sendUpstream(msg); } } @@ -77,8 +76,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { super.exceptionCaught(ctx, e); } } diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/server/HttpServerRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/server/HttpServerRequestTracingHandler.java index 57bc287eee1..6524d01a707 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/server/HttpServerRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/server/HttpServerRequestTracingHandler.java @@ -35,8 +35,7 @@ public void messageReceived(final ChannelHandlerContext ctx, final MessageEvent if (span == null) { ctx.sendUpstream(msg); // superclass does not throw } else { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { ctx.sendUpstream(msg); // superclass does not throw } } @@ -51,12 +50,10 @@ public void messageReceived(final ChannelHandlerContext ctx, final MessageEvent channelTraceContext.reset(); channelTraceContext.setRequestHeaders(headers); - try (final AgentScope scope = activateSpan(span)) { + try (final AgentScope scope = activateSpan(span, true)) { DECORATE.afterStart(span); DECORATE.onRequest(span, ctx.getChannel(), request, context); - scope.setAsyncPropagation(true); - channelTraceContext.setServerSpan(span); Flow.Action.RequestBlockingAction rba = span.getRequestBlockingAction(); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientResponseTracingHandler.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientResponseTracingHandler.java index f401503753a..dfe8f481f7e 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientResponseTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientResponseTracingHandler.java @@ -37,8 +37,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { ctx.fireChannelRead(msg); } } @@ -59,8 +58,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws E } } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { super.exceptionCaught(ctx, cause); } } @@ -78,8 +76,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { } } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { super.channelInactive(ctx); } } diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/server/HttpServerRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/server/HttpServerRequestTracingHandler.java index f066c3bb75b..c2dc2613bf7 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/server/HttpServerRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/server/HttpServerRequestTracingHandler.java @@ -31,8 +31,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { if (span == null) { ctx.fireChannelRead(msg); // superclass does not throw } else { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { ctx.fireChannelRead(msg); // superclass does not throw } } @@ -44,12 +43,10 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { final Context.Extracted extractedContext = DECORATE.extract(headers); final AgentSpan span = DECORATE.startSpan(headers, extractedContext); - try (final AgentScope scope = activateSpan(span)) { + try (final AgentScope scope = activateSpan(span, true)) { DECORATE.afterStart(span); DECORATE.onRequest(span, channel, request, extractedContext); - scope.setAsyncPropagation(true); - channel.attr(ANALYZED_RESPONSE_KEY).set(null); channel.attr(BLOCKED_RESPONSE_KEY).set(null); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientResponseTracingHandler.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientResponseTracingHandler.java index c397c8aadd2..a7d8e240085 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientResponseTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientResponseTracingHandler.java @@ -46,8 +46,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { ctx.fireChannelRead(msg); } } @@ -68,8 +67,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws E } } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { super.exceptionCaught(ctx, cause); } } @@ -87,8 +85,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { } } // We want the callback in the scope of the parent, not the client span - try (final AgentScope scope = activateSpan(parent)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(parent, true)) { super.channelInactive(ctx); } } diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/server/HttpServerRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/server/HttpServerRequestTracingHandler.java index 775a3f863aa..e8e33f7148b 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/server/HttpServerRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/server/HttpServerRequestTracingHandler.java @@ -30,8 +30,7 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { if (span == null) { ctx.fireChannelRead(msg); // superclass does not throw } else { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { ctx.fireChannelRead(msg); // superclass does not throw } } @@ -43,12 +42,10 @@ public void channelRead(final ChannelHandlerContext ctx, final Object msg) { final Context.Extracted extractedContext = DECORATE.extract(headers); final AgentSpan span = DECORATE.startSpan(headers, extractedContext); - try (final AgentScope scope = activateSpan(span)) { + try (final AgentScope scope = activateSpan(span, true)) { DECORATE.afterStart(span); DECORATE.onRequest(span, channel, request, extractedContext); - scope.setAsyncPropagation(true); - channel.attr(ANALYZED_RESPONSE_KEY).set(null); channel.attr(BLOCKED_RESPONSE_KEY).set(null); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations/WithSpanAdvice.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations/WithSpanAdvice.java index 83c318fb7c3..02a444c7130 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations/WithSpanAdvice.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations/WithSpanAdvice.java @@ -14,9 +14,7 @@ public class WithSpanAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static AgentScope onEnter(@Advice.Origin final Method method) { AgentSpan span = DECORATE.startMethodSpan(method); - AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogWrapperHelper.java b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogWrapperHelper.java index 3a8ef2d603b..9437ba83f49 100644 --- a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogWrapperHelper.java +++ b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/DatadogWrapperHelper.java @@ -15,9 +15,7 @@ public static AgentScope createSpan(final HttpRequest request) { DECORATE.afterStart(span); DECORATE.onRequest(span, request, request, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } public static void finishSpan(final AgentSpan span, final HttpResponse response) { diff --git a/dd-java-agent/instrumentation/play-2.3/src/main/java/datadog/trace/instrumentation/play23/PlayAdvice.java b/dd-java-agent/instrumentation/play-2.3/src/main/java/datadog/trace/instrumentation/play23/PlayAdvice.java index cd5ea321086..78c3296b830 100644 --- a/dd-java-agent/instrumentation/play-2.3/src/main/java/datadog/trace/instrumentation/play23/PlayAdvice.java +++ b/dd-java-agent/instrumentation/play-2.3/src/main/java/datadog/trace/instrumentation/play23/PlayAdvice.java @@ -32,8 +32,7 @@ public static AgentScope onEnter(@Advice.Argument(0) final Request req) { span.setMeasured(true); } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); return scope; } diff --git a/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayAdvice.java b/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayAdvice.java index 5bb9eaa72bb..7bcba240fe2 100644 --- a/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayAdvice.java +++ b/dd-java-agent/instrumentation/play-2.4/src/main/java/datadog/trace/instrumentation/play24/PlayAdvice.java @@ -38,8 +38,7 @@ public static AgentScope onEnter(@Advice.Argument(value = 0, readOnly = false) R span.setMeasured(true); } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); req = RequestHelper.withTag(req, "_dd_HasPlayRequestSpan", "true"); diff --git a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayAdvice.java b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayAdvice.java index 51aaaef20ee..9c6d7295daf 100644 --- a/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayAdvice.java +++ b/dd-java-agent/instrumentation/play-2.6/src/main/java/datadog/trace/instrumentation/play26/PlayAdvice.java @@ -38,8 +38,7 @@ public static AgentScope onEnter( // Do not extract the context. span = startSpan(PLAY_REQUEST); } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); span.setMeasured(true); DECORATE.afterStart(span); diff --git a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/ActionWrapper.java b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/ActionWrapper.java index cb22e793883..6710c8036f3 100644 --- a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/ActionWrapper.java +++ b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/ActionWrapper.java @@ -22,8 +22,7 @@ private ActionWrapper(final Action delegate, final AgentSpan span) { @Override public void execute(final T t) throws Exception { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { delegate.execute(t); } } diff --git a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/BlockWrapper.java b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/BlockWrapper.java index ba187854c16..650d1c2cb4d 100644 --- a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/BlockWrapper.java +++ b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/BlockWrapper.java @@ -23,8 +23,7 @@ private BlockWrapper(final Block delegate, final AgentSpan span) { @Override public void execute() throws Exception { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { delegate.execute(); } } diff --git a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/TracingHandler.java b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/TracingHandler.java index e2e9b8abd66..f4be50df0e3 100644 --- a/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/TracingHandler.java +++ b/dd-java-agent/instrumentation/ratpack-1.5/src/main/java/datadog/trace/instrumentation/ratpack/TracingHandler.java @@ -42,8 +42,7 @@ public void handle(final Context ctx) { boolean setFinalizer = false; - try (final AgentScope scope = activateSpan(ratpackSpan)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(ratpackSpan, true)) { ctx.getResponse() .beforeSend( diff --git a/dd-java-agent/instrumentation/rxjava-1/src/main/java/datadog/trace/instrumentation/rxjava/TracedSubscriber.java b/dd-java-agent/instrumentation/rxjava-1/src/main/java/datadog/trace/instrumentation/rxjava/TracedSubscriber.java index d19fa4db4cd..15e16008fe1 100644 --- a/dd-java-agent/instrumentation/rxjava-1/src/main/java/datadog/trace/instrumentation/rxjava/TracedSubscriber.java +++ b/dd-java-agent/instrumentation/rxjava-1/src/main/java/datadog/trace/instrumentation/rxjava/TracedSubscriber.java @@ -28,8 +28,7 @@ public TracedSubscriber( public void onStart() { final AgentSpan span = spanRef.get(); if (span != null) { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { delegate.onStart(); } } else { @@ -41,8 +40,7 @@ public void onStart() { public void onNext(final T value) { final AgentSpan span = spanRef.get(); if (span != null) { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { delegate.onNext(value); } catch (final Throwable e) { onError(e); @@ -57,8 +55,7 @@ public void onCompleted() { final AgentSpan span = spanRef.getAndSet(null); if (span != null) { boolean errored = false; - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { delegate.onCompleted(); } catch (final Throwable e) { // Repopulate the spanRef for onError @@ -81,8 +78,7 @@ public void onCompleted() { public void onError(final Throwable e) { final AgentSpan span = spanRef.getAndSet(null); if (span != null) { - try (final AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (final AgentScope scope = activateSpan(span, true)) { decorator.onError(span, e); delegate.onError(e); } catch (final Throwable e2) { diff --git a/dd-java-agent/instrumentation/scala-concurrent/src/test/java/LinearTask.java b/dd-java-agent/instrumentation/scala-concurrent/src/test/java/LinearTask.java index 74fa503a1b4..56401a21316 100644 --- a/dd-java-agent/instrumentation/scala-concurrent/src/test/java/LinearTask.java +++ b/dd-java-agent/instrumentation/scala-concurrent/src/test/java/LinearTask.java @@ -32,9 +32,7 @@ protected Integer compute() { } else { int next = parent + 1; AgentSpan span = startSpan(Integer.toString(next)); - try (AgentScope scope = activateSpan(span)) { - // shouldn't be necessary with a decent API - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { LinearTask child = new LinearTask(next, depth); return child.fork().join(); } finally { diff --git a/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java b/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java index ac31baaa709..8f27ba741b0 100644 --- a/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java +++ b/dd-java-agent/instrumentation/servlet/request-2/src/main/java/datadog/trace/instrumentation/servlet2/Servlet2Advice.java @@ -50,8 +50,7 @@ public static boolean onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(httpServletRequest); final AgentSpan span = DECORATE.startSpan(httpServletRequest, extractedContext); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, httpServletRequest, httpServletRequest, extractedContext); diff --git a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java index b61545ed29f..8171a5d5d4f 100644 --- a/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java +++ b/dd-java-agent/instrumentation/servlet/request-3/src/main/java/datadog/trace/instrumentation/servlet3/Servlet3Advice.java @@ -67,8 +67,7 @@ public static boolean onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(httpServletRequest); final AgentSpan span = DECORATE.startSpan(httpServletRequest, extractedContext); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, httpServletRequest, httpServletRequest, extractedContext); diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java index 1d88985971e..4aab49bada7 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java @@ -129,9 +129,7 @@ public static AgentScope start( requestSpan = request.getAttribute(DD_SPAN_ATTRIBUTE); request.setAttribute(DD_SPAN_ATTRIBUTE, span); - final AgentScope agentScope = activateSpan(span); - agentScope.setAsyncPropagation(true); - return agentScope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java index d78aaa1806e..3d29a99e8bf 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/filter/FilterInstrumentation.java @@ -74,9 +74,7 @@ public static AgentScope start(@Advice.This final Filter filter) { // Here we use "this" instead of "the method target" to distinguish abstract filter instances. span.setResourceName(DECORATE.spanNameForMethod(filter.getClass(), "doFilter")); - final AgentScope agentScope = activateSpan(span); - agentScope.setAsyncPropagation(true); - return agentScope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java index 9cd2d8febe5..858cc725e44 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletInstrumentation.java @@ -84,9 +84,7 @@ public static AgentScope start(@Advice.Origin final Method method) { // Here we use the Method instead of "this.class.name" to distinguish calls to "super". span.setResourceName(DECORATE.spanNameForMethod(method)); - final AgentScope agentScope = activateSpan(span); - agentScope.setAsyncPropagation(true); - return agentScope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java index 80607c00637..82289210e5f 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/http/HttpServletResponseInstrumentation.java @@ -72,9 +72,7 @@ public static AgentScope start( span.setResourceName(DECORATE.spanNameForMethod(HttpServletResponse.class, method)); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/spray-1.3/src/main/scala/datadog/trace/instrumentation/spray/SprayHttpServerRunSealedRouteAdvice.java b/dd-java-agent/instrumentation/spray-1.3/src/main/scala/datadog/trace/instrumentation/spray/SprayHttpServerRunSealedRouteAdvice.java index 3db525c6eea..571a683ed22 100644 --- a/dd-java-agent/instrumentation/spray-1.3/src/main/scala/datadog/trace/instrumentation/spray/SprayHttpServerRunSealedRouteAdvice.java +++ b/dd-java-agent/instrumentation/spray-1.3/src/main/scala/datadog/trace/instrumentation/spray/SprayHttpServerRunSealedRouteAdvice.java @@ -26,12 +26,11 @@ public static AgentScope enter(@Advice.Argument(value = 1, readOnly = false) Req extractedContext = null; span = startSpan(DECORATE.spanName()); } - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); DECORATE.afterStart(span); - ctx = SprayHelper.wrapRequestContext(ctx, scope.span(), extractedContext); + ctx = SprayHelper.wrapRequestContext(ctx, span, extractedContext); return scope; } diff --git a/dd-java-agent/instrumentation/spring-data-1.8/src/main/java/datadog/trace/instrumentation/springdata/RepositoryInterceptor.java b/dd-java-agent/instrumentation/spring-data-1.8/src/main/java/datadog/trace/instrumentation/springdata/RepositoryInterceptor.java index b45cd785996..57fd1f4e505 100644 --- a/dd-java-agent/instrumentation/spring-data-1.8/src/main/java/datadog/trace/instrumentation/springdata/RepositoryInterceptor.java +++ b/dd-java-agent/instrumentation/spring-data-1.8/src/main/java/datadog/trace/instrumentation/springdata/RepositoryInterceptor.java @@ -35,8 +35,7 @@ public Object invoke(final MethodInvocation methodInvocation) throws Throwable { DECORATOR.afterStart(span); DECORATOR.onOperation(span, invokedMethod, repositoryInterface); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); Object result = null; try { diff --git a/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpannedMethodInvocation.java b/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpannedMethodInvocation.java index e7cf22a1a15..1e17fb6c621 100644 --- a/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpannedMethodInvocation.java +++ b/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpannedMethodInvocation.java @@ -45,8 +45,7 @@ private Object invokeWithContinuation(CharSequence spanName) throws Throwable { private Object invokeWithSpan(CharSequence spanName) throws Throwable { AgentSpan span = startSpan(spanName); - try (AgentScope scope = activateSpan(span)) { - scope.setAsyncPropagation(true); + try (AgentScope scope = activateSpan(span, true)) { return delegate.proceed(); } finally { span.finish(); diff --git a/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpringSchedulingRunnableWrapper.java b/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpringSchedulingRunnableWrapper.java index efe42cec0cd..62c5cedd2b0 100644 --- a/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpringSchedulingRunnableWrapper.java +++ b/dd-java-agent/instrumentation/spring-scheduling-3.1/src/main/java/datadog/trace/instrumentation/springscheduling/SpringSchedulingRunnableWrapper.java @@ -26,9 +26,8 @@ public void run() { LEGACY_TRACING ? startSpan(SCHEDULED_CALL) : startSpan(SCHEDULED_CALL, null); DECORATE.afterStart(span); - try (final AgentScope scope = activateSpan(span)) { + try (final AgentScope scope = activateSpan(span, true)) { DECORATE.onRun(span, runnable); - scope.setAsyncPropagation(true); try { runnable.run(); diff --git a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterAdvice.java b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterAdvice.java index aa38ebfffee..da69a94ea14 100644 --- a/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterAdvice.java +++ b/dd-java-agent/instrumentation/spring-webflux-5/src/main/java/datadog/trace/instrumentation/springwebflux/server/HandlerAdapterAdvice.java @@ -44,8 +44,7 @@ public static AgentScope methodEnter( span.setSpanName(operationName); span.setTag("handler.type", handlerType); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); } final AgentSpan parentSpan = exchange.getAttribute(AdviceUtils.PARENT_SPAN_ATTRIBUTE); diff --git a/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java b/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java index 14ecd3ab897..14194e6621c 100644 --- a/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-webmvc-3.1/src/main/java/datadog/trace/instrumentation/springweb/HandlerAdapterInstrumentation.java @@ -81,9 +81,7 @@ public static AgentScope nameResourceAndStartSpan( DECORATE.afterStart(span); DECORATE.onHandle(span, handler); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/spring-webmvc-6.0/src/main/java17/datadog/trace/instrumentation/springweb6/ControllerAdvice.java b/dd-java-agent/instrumentation/spring-webmvc-6.0/src/main/java17/datadog/trace/instrumentation/springweb6/ControllerAdvice.java index 243cec8d051..76e2e0f0455 100644 --- a/dd-java-agent/instrumentation/spring-webmvc-6.0/src/main/java17/datadog/trace/instrumentation/springweb6/ControllerAdvice.java +++ b/dd-java-agent/instrumentation/spring-webmvc-6.0/src/main/java17/datadog/trace/instrumentation/springweb6/ControllerAdvice.java @@ -34,9 +34,7 @@ public static AgentScope nameResourceAndStartSpan( SpringWebHttpServerDecorator.DECORATE.afterStart(span); SpringWebHttpServerDecorator.DECORATE.onHandle(span, handler); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } @Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class) diff --git a/dd-java-agent/instrumentation/tomcat-5.5/src/main/java/datadog/trace/instrumentation/tomcat/TomcatServerInstrumentation.java b/dd-java-agent/instrumentation/tomcat-5.5/src/main/java/datadog/trace/instrumentation/tomcat/TomcatServerInstrumentation.java index 34f67a850ca..f2e77a3f966 100644 --- a/dd-java-agent/instrumentation/tomcat-5.5/src/main/java/datadog/trace/instrumentation/tomcat/TomcatServerInstrumentation.java +++ b/dd-java-agent/instrumentation/tomcat-5.5/src/main/java/datadog/trace/instrumentation/tomcat/TomcatServerInstrumentation.java @@ -125,8 +125,7 @@ public static AgentScope onService(@Advice.Argument(0) org.apache.coyote.Request req.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext); final AgentSpan span = DECORATE.startSpan(req, extractedContext); - final AgentScope scope = activateSpan(span); - scope.setAsyncPropagation(true); + final AgentScope scope = activateSpan(span, true); // This span is finished when Request.recycle() is called by RequestInstrumentation. DECORATE.afterStart(span); diff --git a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java index 332d86f99c9..e5e59bbc4c4 100644 --- a/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java +++ b/dd-java-agent/instrumentation/twilio/src/main/java/datadog/trace/instrumentation/twilio/TwilioAsyncInstrumentation.java @@ -106,11 +106,9 @@ public static AgentScope methodEnter( DECORATE.afterStart(span); DECORATE.onServiceExecution(span, that, methodName); - final AgentScope scope = activateSpan(span); // Enable async propagation, so the newly spawned task will be associated back with this // original trace. - scope.setAsyncPropagation(true); - return scope; + return activateSpan(span, true); } /** Method exit instrumentation. */ diff --git a/dd-java-agent/instrumentation/undertow/undertow-2.0/src/main/java/datadog/trace/instrumentation/undertow/HandlerInstrumentation.java b/dd-java-agent/instrumentation/undertow/undertow-2.0/src/main/java/datadog/trace/instrumentation/undertow/HandlerInstrumentation.java index c9bcd3d5a91..d7a959d5b72 100644 --- a/dd-java-agent/instrumentation/undertow/undertow-2.0/src/main/java/datadog/trace/instrumentation/undertow/HandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/undertow/undertow-2.0/src/main/java/datadog/trace/instrumentation/undertow/HandlerInstrumentation.java @@ -93,8 +93,7 @@ public static void onEnter( final AgentSpan.Context.Extracted extractedContext = DECORATE.extract(exchange); final AgentSpan span = DECORATE.startSpan(exchange, extractedContext).setMeasured(true); - scope = activateSpan(span); - scope.setAsyncPropagation(true); + scope = activateSpan(span, true); DECORATE.afterStart(span); DECORATE.onRequest(span, exchange, exchange, extractedContext); diff --git a/dd-java-agent/instrumentation/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteHandlerWrapper.java b/dd-java-agent/instrumentation/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteHandlerWrapper.java index c1280788741..c3755d1f17c 100644 --- a/dd-java-agent/instrumentation/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteHandlerWrapper.java +++ b/dd-java-agent/instrumentation/vertx-web-3.4/src/main/java/datadog/trace/instrumentation/vertx_3_4/server/RouteHandlerWrapper.java @@ -56,8 +56,7 @@ public void handle(final RoutingContext routingContext) { updateRoutingContextWithRoute(routingContext); } try (final AgentScope scope = - span != null ? activateSpan(span) : AgentTracer.NoopAgentScope.INSTANCE) { - scope.setAsyncPropagation(true); + span != null ? activateSpan(span, true) : AgentTracer.NoopAgentScope.INSTANCE) { try { actual.handle(routingContext); } catch (final Throwable t) { diff --git a/dd-java-agent/instrumentation/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteHandlerWrapper.java b/dd-java-agent/instrumentation/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteHandlerWrapper.java index ada3f018d69..8b08d6b91ef 100644 --- a/dd-java-agent/instrumentation/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteHandlerWrapper.java +++ b/dd-java-agent/instrumentation/vertx-web-4.0/src/main/java/datadog/trace/instrumentation/vertx_4_0/server/RouteHandlerWrapper.java @@ -50,8 +50,7 @@ public void handle(final RoutingContext routingContext) { } try (final AgentScope scope = - span != null ? activateSpan(span) : AgentTracer.NoopAgentScope.INSTANCE) { - scope.setAsyncPropagation(true); + span != null ? activateSpan(span, true) : AgentTracer.NoopAgentScope.INSTANCE) { try { actual.handle(routingContext); } catch (final Throwable t) {