From 3414c9df96ce5f6c135bf563a06469d3c8a84e72 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Wed, 12 Feb 2025 09:48:58 +0100 Subject: [PATCH 1/2] feat(core): Clean up old propagation API --- .../decorator/HttpServerDecorator.java | 3 ++- .../HeadersInjectAdapter.java | 4 ++-- .../rmi/ContextDispatcher.java | 5 ++-- .../instrumentation/rmi/ContextPayload.java | 4 ++-- .../rmi/ContextPropagator.java | 2 +- .../trace/civisibility/ProcessHierarchy.java | 5 ++-- .../buildsystem/BuildSystemModuleImpl.java | 6 ++--- .../propagation/AgentTextMapPropagator.java | 17 +++++++------ .../akkahttp/AkkaHttpClientHelpers.java | 4 ++-- .../akkahttp106/AkkaHttpClientHelpers.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../grpc/client/GrpcInjectAdapter.java | 4 ++-- .../grpc/server/TracingServerInterceptor.java | 4 ++-- .../v2/eventbridge/TextMapInjectAdapter.java | 4 ++-- .../aws/v2/s3/TextMapInjectAdapter.java | 4 ++-- .../aws/v0/AwsSdkClientDecorator.java | 4 ++-- .../aws/v2/AwsSdkClientDecorator.java | 4 ++-- .../aws/v1/sns/TextMapInjectAdapter.java | 4 ++-- .../aws/v2/sns/TextMapInjectAdapter.java | 4 ++-- .../aws/v1/sqs/MessageAttributeInjector.java | 5 ++-- .../aws/v1/sqs/TracingIterator.java | 6 +++-- .../aws/v2/sqs/MessageAttributeInjector.java | 7 +++--- .../aws/v2/sqs/TracingIterator.java | 6 +++-- .../axis2/TextMapInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HeadersInjectAdapter.java | 4 ++-- .../googlepubsub/PubSubDecorator.java | 5 ++-- .../googlepubsub/TextMapInjectAdapter.java | 4 ++-- .../grizzly/client/InjectAdapter.java | 4 ++-- .../grpc/client/GrpcInjectAdapter.java | 4 ++-- .../grpc/server/TracingServerInterceptor.java | 4 ++-- .../httpclient/HttpHeadersInjectAdapter.java | 5 ++-- .../jaxrs/v1/InjectAdapter.java | 5 ++-- .../instrumentation/jaxrs/InjectAdapter.java | 5 ++-- .../jetty_client12/HeadersInjectAdapter.java | 4 ++-- .../jetty_client/HeadersInjectAdapter.java | 4 ++-- .../jms/DatadogMessageListener.java | 4 ++-- .../JMSMessageConsumerInstrumentation.java | 4 ++-- .../MDBMessageConsumerInstrumentation.java | 4 ++-- .../jms/MessageInjectAdapter.java | 4 ++-- .../TextMapInjectAdapterInterface.java | 4 ++-- .../kafka_clients/TracingIterator.java | 5 ++-- .../TextMapInjectAdapterInterface.java | 4 ++-- .../kafka_clients38/TracingIterator.java | 5 ++-- .../KafkaStreamTaskInstrumentation.java | 8 ++++--- .../ProcessorRecordContextSetter.java | 4 ++-- .../StampedRecordContextSetter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../okhttp2/RequestBuilderInjectAdapter.java | 4 ++-- .../okhttp3/RequestBuilderInjectAdapter.java | 4 ++-- .../opentelemetry/OtelContextPropagators.java | 3 ++- .../opentracing31/OTTextMapSetter.java | 6 +++-- .../opentracing31/OTTracer.java | 6 ++--- .../opentracing32/OTTextMapInjectSetter.java | 6 +++-- .../opentracing32/OTTracer.java | 6 ++--- .../pekkohttp/PekkoHttpClientHelpers.java | 4 ++-- .../playws/HeadersInjectAdapter.java | 4 ++-- .../rabbitmq/amqp/RabbitDecorator.java | 6 +++-- .../rabbitmq/amqp/TextMapInjectAdapter.java | 4 ++-- .../servlet/ServletRequestSetter.java | 4 ++-- .../SpringMessageHandlerInstrumentation.java | 4 ++-- .../synapse3/TargetRequestInjectAdapter.java | 4 ++-- .../test/server/http/TestHttpServer.groovy | 8 +++---- .../core/propagation/InjectorBenchmark.java | 8 ++++--- .../java/datadog/trace/core/CoreTracer.java | 10 -------- .../trace/core/propagation/B3HttpCodec.java | 6 ++--- .../core/propagation/DatadogHttpCodec.java | 4 ++-- .../core/propagation/HaystackHttpCodec.java | 4 ++-- .../trace/core/propagation/HttpCodec.java | 6 ++--- .../trace/core/propagation/NoneCodec.java | 5 ++-- .../trace/core/propagation/W3CHttpCodec.java | 13 ++++------ .../trace/core/propagation/XRayHttpCodec.java | 4 ++-- .../core/propagation/XRayPropagator.java | 2 +- .../datadog/trace/lambda/LambdaHandler.java | 17 +++++++------ .../trace/core/propagation/MapSetter.groovy | 7 ++++-- .../propagation/TracingPropagatorTest.groovy | 4 ++-- .../java/datadog/opentracing/DDTracer.java | 6 +++-- internal-api/build.gradle | 1 - .../instrumentation/api/AgentPropagation.java | 24 +++++++++---------- .../instrumentation/api/AgentTracer.java | 15 ------------ 84 files changed, 220 insertions(+), 229 deletions(-) diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java index ca2a241f9c1..29e33a3dd8c 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java @@ -3,6 +3,7 @@ import static datadog.trace.api.cache.RadixTreeCache.UNSET_STATUS; import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR; @@ -128,7 +129,7 @@ public AgentSpanContext.Extracted extract(REQUEST_CARRIER carrier) { if (null == carrier || null == getter) { return null; } - return tracer().propagate().extract(carrier, getter); + return extractContextAndGetSpanContext(carrier, getter); } /** Deprecated. Use {@link #startSpan(String, Object, AgentSpanContext.Extracted)} instead. */ diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java index d89d42faafb..fab72a63264 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.bootstrap.instrumentation.httpurlconnection; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.net.HttpURLConnection; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java index ea3feb30f63..8e869d31604 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java @@ -1,6 +1,6 @@ package datadog.trace.bootstrap.instrumentation.rmi; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.rmi.ContextPropagator.DD_CONTEXT_CALL_ID; import static datadog.trace.bootstrap.instrumentation.rmi.ContextPropagator.PROPAGATOR; import static datadog.trace.bootstrap.instrumentation.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT; @@ -43,7 +43,8 @@ public void dispatch(final Remote obj, final RemoteCall call) throws IOException final ContextPayload payload = ContextPayload.read(in); if (payload != null) { final AgentSpanContext context = - propagate().extract(payload.getContext(), ContextVisitors.stringValuesMap()); + extractContextAndGetSpanContext( + payload.getContext(), ContextVisitors.stringValuesMap()); THREAD_LOCAL_CONTEXT.set(context); } } diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java index a08aca5b9f5..8eb05fcb408 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java @@ -2,7 +2,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.io.IOException; import java.io.ObjectInput; @@ -56,7 +56,7 @@ public void write(final ObjectOutput out) throws IOException { } @ParametersAreNonnullByDefault - public static class InjectAdapter implements AgentPropagation.Setter { + public static class InjectAdapter implements CarrierSetter { @Override public void set(final ContextPayload carrier, final String key, final String value) { carrier.getContext().put(key, value); diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java index 6caafeff699..bd2add5f663 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java @@ -62,7 +62,7 @@ private boolean checkIfContextCanBePassed( return result; } - /** @returns true when no error happened during call */ + /** @return {@code true} when no error happened during call */ private boolean syntheticCall( final Connection c, final ContextPayload payload, final int operationId) { final StreamRemoteCall shareContextCall = new StreamRemoteCall(c); diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java index 3c22585591d..7ba2837e4f9 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java @@ -1,6 +1,6 @@ package datadog.trace.civisibility; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.trace.api.config.CiVisibilityConfig; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; @@ -33,7 +33,8 @@ public void forEachKey(Properties carrier, AgentPropagation.KeyClassifier classi ProcessHierarchy() { parentProcessModuleContext = - propagate().extract(System.getProperties(), SystemPropertiesPropagationGetter.INSTANCE); + extractContextAndGetSpanContext( + System.getProperties(), SystemPropertiesPropagationGetter.INSTANCE); } /** diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java index 9332e20b8f5..3754c6cee22 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java @@ -3,6 +3,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; import datadog.communication.ddagent.TracerVersion; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.civisibility.CIConstants; @@ -12,7 +13,6 @@ import datadog.trace.api.civisibility.domain.JavaAgent; import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector; import datadog.trace.api.config.CiVisibilityConfig; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.Tags; @@ -112,8 +112,8 @@ public BuildSystemModuleImpl( @ParametersAreNonnullByDefault private static final class ChildProcessPropertiesPropagationSetter - implements AgentPropagation.Setter> { - static final AgentPropagation.Setter> INSTANCE = + implements CarrierSetter> { + static final CarrierSetter> INSTANCE = new ChildProcessPropertiesPropagationSetter(); private ChildProcessPropertiesPropagationSetter() {} diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java index f571dd10f32..86b6bf7986f 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java @@ -3,6 +3,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; import static datadog.opentelemetry.shim.trace.OtelSpanContext.fromRemote; import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.opentelemetry.shim.context.OtelContext; import datadog.opentelemetry.shim.trace.OtelExtractedContext; @@ -11,7 +12,6 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext.Extracted; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.util.PropagationUtils; import io.opentelemetry.api.trace.Span; @@ -47,14 +47,13 @@ public Context extract(Context context, @Nullable C carrier, TextMapGetter { - for (String key : getter.keys(carrier1)) { - classifier.accept(key, getter.get(carrier1, key)); - } - }); + extractContextAndGetSpanContext( + carrier, + (carrier1, classifier) -> { + for (String key : getter.keys(carrier1)) { + classifier.accept(key, getter.get(carrier1, key)); + } + }); if (extracted == null) { return context; } else { diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java index 52fa1f31f04..1ce5ed19499 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java @@ -6,7 +6,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import akka.http.scaladsl.model.headers.CustomHeader; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import javax.annotation.ParametersAreNonnullByDefault; import scala.runtime.AbstractFunction1; @@ -33,7 +33,7 @@ public Void apply(final Try result) { } } - public static class AkkaHttpHeaders implements AgentPropagation.Setter { + public static class AkkaHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the AkkaHttpHeaders object was created? private final boolean hadSpan; diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java index b9e0fc65042..bfcf27da0f5 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java @@ -4,7 +4,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import akka.http.scaladsl.model.headers.CustomHeader; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import scala.runtime.AbstractFunction1; import scala.util.Try; @@ -30,7 +30,7 @@ public Void apply(final Try result) { } } - public static class AkkaHttpHeaders implements AgentPropagation.Setter { + public static class AkkaHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the AkkaHttpHeaders object was created? private boolean hadSpan; diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java index 8c9f111f13a..0bc97acaf98 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpasyncclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.HttpRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java index 42f4866932d..d677fdc1bd4 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.client.methods.HttpUriRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java index 598526f990d..30f945432ef 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpclient5; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.hc.core5.http.HttpRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java index 332c5cf0f12..72799867c90 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.armeria.grpc.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.grpc.Metadata; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public final class GrpcInjectAdapter implements AgentPropagation.Setter { +public final class GrpcInjectAdapter implements CarrierSetter { public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java index 5b22d0d927b..2e3026f9cad 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java @@ -2,8 +2,8 @@ import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.armeria.grpc.server.GrpcExtractAdapter.GETTER; import static datadog.trace.instrumentation.armeria.grpc.server.GrpcServerDecorator.DECORATE; @@ -62,7 +62,7 @@ public ServerCall.Listener interceptCall( return next.startCall(call, headers); } - AgentSpanContext spanContext = propagate().extract(headers, GETTER); + AgentSpanContext spanContext = extractContextAndGetSpanContext(headers, GETTER); AgentTracer.TracerAPI tracer = tracer(); spanContext = callIGCallbackRequestStarted(tracer, spanContext); diff --git a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java index ff7f760b933..f89f0a28f75 100644 --- a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java @@ -1,10 +1,10 @@ package datadog.trace.instrumentation.aws.v2.eventbridge; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java index e3ccf485543..cfefe319de3 100644 --- a/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v2.s3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java index 59b2c306f93..d49c8c99777 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java @@ -9,12 +9,12 @@ import com.amazonaws.Request; import com.amazonaws.Response; import com.amazonaws.http.HttpMethodName; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.cache.DDCache; import datadog.trace.api.cache.DDCaches; import datadog.trace.api.naming.SpanNaming; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -32,7 +32,7 @@ import javax.annotation.ParametersAreNonnullByDefault; public class AwsSdkClientDecorator extends HttpClientDecorator - implements AgentPropagation.Setter> { + implements CarrierSetter> { private static final String AWS = "aws"; diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java index 3e9912a3dae..a495b577618 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java @@ -7,6 +7,7 @@ import static datadog.trace.core.datastreams.TagsProcessor.TOPIC_TAG; import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.ConfigDefaults; import datadog.trace.api.DDTags; @@ -16,7 +17,6 @@ import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.InstanceStore; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags; @@ -52,7 +52,7 @@ import software.amazon.awssdk.http.SdkHttpResponse; public class AwsSdkClientDecorator extends HttpClientDecorator - implements AgentPropagation.Setter { + implements CarrierSetter { public static final AwsSdkClientDecorator DECORATE = new AwsSdkClientDecorator(); private static final DDCache CACHE = DDCaches.newFixedSizeCache(128); // cloud services can have high cardinality diff --git a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java index 6ec5a9dd5ab..27e19045655 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v1.sns; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java index 57b6cd93b84..bbe542be905 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v2.sns; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java index a522c961c34..02a81e8278e 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java @@ -3,11 +3,10 @@ import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; import com.amazonaws.services.sqs.model.MessageAttributeValue; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; -public class MessageAttributeInjector - implements AgentPropagation.Setter> { +public class MessageAttributeInjector implements CarrierSetter> { public static final MessageAttributeInjector SETTER = new MessageAttributeInjector(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java index 0cd6f6cbcdf..8eb154800c9 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.aws.v1.sqs; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; @@ -65,7 +65,9 @@ protected void startNewMessageSpan(Message message) { if (batchContext == null) { // first grab any incoming distributed context AgentSpanContext spanContext = - Config.get().isSqsPropagationEnabled() ? propagate().extract(message, GETTER) : null; + Config.get().isSqsPropagationEnabled() + ? extractContextAndGetSpanContext(message, GETTER) + : null; // next add a time-in-queue span for non-legacy SQS traces if (TIME_IN_QUEUE_ENABLED) { long timeInQueueStart = GETTER.extractTimeInQueueStart(message); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java index d92de8bebf4..e39e3ac42db 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java @@ -2,12 +2,13 @@ import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; +import javax.annotation.ParametersAreNonnullByDefault; import software.amazon.awssdk.services.sqs.model.MessageAttributeValue; -public class MessageAttributeInjector - implements AgentPropagation.Setter> { +@ParametersAreNonnullByDefault +public class MessageAttributeInjector implements CarrierSetter> { public static final MessageAttributeInjector SETTER = new MessageAttributeInjector(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java index 503d5efa5b2..2213ac64d6e 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.aws.v2.sqs; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; @@ -67,7 +67,9 @@ protected void startNewMessageSpan(Message message) { if (batchContext == null) { // first grab any incoming distributed context AgentSpanContext spanContext = - Config.get().isSqsPropagationEnabled() ? propagate().extract(message, GETTER) : null; + Config.get().isSqsPropagationEnabled() + ? extractContextAndGetSpanContext(message, GETTER) + : null; // next add a time-in-queue span for non-legacy SQS traces if (TIME_IN_QUEUE_ENABLED) { long timeInQueueStart = GETTER.extractTimeInQueueStart(message); diff --git a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java index 40682fb0696..fe4f2311bdc 100644 --- a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.axis2; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter> { +public class TextMapInjectAdapter implements CarrierSetter> { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java index 5e24cd98fba..f35bb0eb8af 100644 --- a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.commonshttpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpMethod; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java index c65da9c0cbc..a9a162d576a 100644 --- a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.googlehttpclient; import com.google.api.client.http.HttpRequest; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java index f966ca8b3c1..3e61cd28753 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.googlepubsub; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -129,7 +129,8 @@ protected String spanKind() { } public AgentSpan onConsume(final PubsubMessage message, final String subscription) { - final AgentSpanContext spanContext = propagate().extract(message, TextMapExtractAdapter.GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(message, TextMapExtractAdapter.GETTER); final AgentSpan span = startSpan(PUBSUB_CONSUME, spanContext); final CharSequence parsedSubscription = extractSubscription(subscription); final LinkedHashMap sortedTags = new LinkedHashMap<>(3); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java index 46245ce4b04..c1c39bc4e77 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.googlepubsub; import com.google.pubsub.v1.PubsubMessage; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java index 946d4b4d4e3..44f71cf95a2 100644 --- a/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java +++ b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.grizzly.client; import com.ning.http.client.Request; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class InjectAdapter implements AgentPropagation.Setter { +public class InjectAdapter implements CarrierSetter { public static final InjectAdapter SETTER = new InjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java index 70cd03568f4..392e5647398 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.grpc.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.grpc.Metadata; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public final class GrpcInjectAdapter implements AgentPropagation.Setter { +public final class GrpcInjectAdapter implements CarrierSetter { public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java index 954d7458231..5be9e13a5a3 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java @@ -2,8 +2,8 @@ import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.grpc.server.GrpcExtractAdapter.GETTER; import static datadog.trace.instrumentation.grpc.server.GrpcServerDecorator.DECORATE; @@ -62,7 +62,7 @@ public ServerCall.Listener interceptCall( return next.startCall(call, headers); } - AgentSpanContext spanContext = propagate().extract(headers, GETTER); + AgentSpanContext spanContext = extractContextAndGetSpanContext(headers, GETTER); AgentTracer.TracerAPI tracer = tracer(); spanContext = callIGCallbackRequestStarted(tracer, spanContext); diff --git a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java index 482f51554ab..c9e95ca76c5 100644 --- a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java @@ -1,13 +1,12 @@ package datadog.trace.instrumentation.httpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.function.BiPredicate; -public class HttpHeadersInjectAdapter - implements AgentPropagation.Setter>> { +public class HttpHeadersInjectAdapter implements CarrierSetter>> { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); public static final BiPredicate KEEP = HttpHeadersInjectAdapter::keep; diff --git a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java index 692f4653bca..ed476a83fc2 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java +++ b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java @@ -1,12 +1,11 @@ package datadog.trace.instrumentation.jaxrs.v1; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; @ParametersAreNonnullByDefault -public final class InjectAdapter - implements AgentPropagation.Setter> { +public final class InjectAdapter implements CarrierSetter> { public static final InjectAdapter SETTER = new InjectAdapter(); diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java index dc555d8acc8..24e3f6a12b4 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java @@ -1,12 +1,11 @@ package datadog.trace.instrumentation.jaxrs; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; @ParametersAreNonnullByDefault -public final class InjectAdapter - implements AgentPropagation.Setter> { +public final class InjectAdapter implements CarrierSetter> { public static final InjectAdapter SETTER = new InjectAdapter(); diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java index 94a16ded1bb..1869f7da4de 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.jetty_client12; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.eclipse.jetty.client.Request; -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java index d4bc2cf0b78..efad6db8fc6 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.jetty_client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.eclipse.jetty.client.api.Request; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java index 6951b3707e1..b58034f3d88 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jms; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.BROKER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; @@ -40,7 +40,7 @@ public void onMessage(Message message) { AgentSpan span; AgentSpanContext propagatedContext = null; if (!consumerState.isPropagationDisabled()) { - propagatedContext = propagate().extract(message, GETTER); + propagatedContext = extractContextAndGetSpanContext(message, GETTER); } long startMillis = GETTER.extractTimeInQueueStart(message); if (startMillis == 0 || !TIME_IN_QUEUE_ENABLED) { diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java index 105c325f638..446dc32897f 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java @@ -3,9 +3,9 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.hasInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.BROKER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; @@ -120,7 +120,7 @@ public static void afterReceive( AgentSpan span; AgentSpanContext propagatedContext = null; if (!consumerState.isPropagationDisabled()) { - propagatedContext = propagate().extract(message, GETTER); + propagatedContext = extractContextAndGetSpanContext(message, GETTER); } long startMillis = GETTER.extractTimeInQueueStart(message); if (startMillis == 0 || !TIME_IN_QUEUE_ENABLED) { diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java index 20db57e3132..6f2cb2c16e1 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java @@ -4,8 +4,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.hasSuperType; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_CONSUME; @@ -67,7 +67,7 @@ public static AgentScope methodEnter(@Advice.Argument(0) final Message message) if (CallDepthThreadLocalMap.incrementCallDepth(MessageListener.class) > 0) { return null; } - AgentSpanContext propagatedContext = propagate().extract(message, GETTER); + AgentSpanContext propagatedContext = extractContextAndGetSpanContext(message, GETTER); AgentSpan span = startSpan(JMS_CONSUME, propagatedContext); CONSUMER_DECORATE.afterStart(span); CharSequence consumerResourceName; diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java index d63cc4d6a6a..7d2e558fc79 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java @@ -3,7 +3,7 @@ import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_BATCH_ID_KEY; import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_PRODUCED_KEY; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.jms.MessageBatchState; import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; import de.thetaphi.forbiddenapis.SuppressForbidden; @@ -12,7 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class MessageInjectAdapter implements AgentPropagation.Setter { +public class MessageInjectAdapter implements CarrierSetter { private static final Logger log = LoggerFactory.getLogger(MessageInjectAdapter.class); public static final MessageInjectAdapter SETTER = new MessageInjectAdapter(); diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java index 516ca4b7100..466be384c52 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.kafka_clients; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; -public interface TextMapInjectAdapterInterface extends AgentPropagation.Setter { +public interface TextMapInjectAdapterInterface extends CarrierSetter { void injectTimeInQueue(Headers headers); } diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java index 610ad20a2ca..3c6f26995a3 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java @@ -2,9 +2,9 @@ import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -84,7 +84,8 @@ protected void startNewRecordSpan(ConsumerRecord val) { AgentSpan span, queueSpan = null; if (val != null) { if (!Config.get().isKafkaClientPropagationDisabledForTopic(val.topic())) { - final AgentSpanContext spanContext = propagate().extract(val.headers(), GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(val.headers(), GETTER); long timeInQueueStart = GETTER.extractTimeInQueueStart(val.headers()); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(operationName, spanContext); diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java index 2dcb7c72146..869613c656b 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.kafka_clients38; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; -public interface TextMapInjectAdapterInterface extends AgentPropagation.Setter { +public interface TextMapInjectAdapterInterface extends CarrierSetter { void injectTimeInQueue(Headers headers); } diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java index 1c127778141..9a922d46ad0 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java @@ -2,9 +2,9 @@ import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -81,7 +81,8 @@ protected void startNewRecordSpan(ConsumerRecord val) { AgentSpan span, queueSpan = null; if (val != null) { if (!Config.get().isKafkaClientPropagationDisabledForTopic(val.topic())) { - final AgentSpanContext spanContext = propagate().extract(val.headers(), GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(val.headers(), GETTER); long timeInQueueStart = GETTER.extractTimeInQueueStart(val.headers()); if (timeInQueueStart == 0 || !KafkaDecorator.TIME_IN_QUEUE_ENABLED) { span = startSpan(operationName, spanContext); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java index 33d62f4cdb2..10d15eb8486 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java @@ -3,8 +3,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -234,7 +234,8 @@ public static void start( StreamTaskContext streamTaskContext = InstrumentationContext.get(StreamTask.class, StreamTaskContext.class).get(task); if (!Config.get().isKafkaClientPropagationDisabledForTopic(record.topic())) { - final AgentSpanContext extractedContext = propagate().extract(record, SR_GETTER); + final AgentSpanContext extractedContext = + extractContextAndGetSpanContext(record, SR_GETTER); long timeInQueueStart = SR_GETTER.extractTimeInQueueStart(record); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(KAFKA_CONSUME, extractedContext); @@ -309,7 +310,8 @@ public static void start( StreamTaskContext streamTaskContext = InstrumentationContext.get(StreamTask.class, StreamTaskContext.class).get(task); if (!Config.get().isKafkaClientPropagationDisabledForTopic(record.topic())) { - final AgentSpanContext extractedContext = propagate().extract(record, PR_GETTER); + final AgentSpanContext extractedContext = + extractContextAndGetSpanContext(record, PR_GETTER); long timeInQueueStart = PR_GETTER.extractTimeInQueueStart(record); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(KAFKA_CONSUME, extractedContext); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java index a934c4b2a49..a444871f409 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java @@ -3,13 +3,13 @@ import static datadog.trace.instrumentation.kafka_streams.ProcessorRecordContextHeadersAccess.HEADERS_METHOD; import static java.nio.charset.StandardCharsets.UTF_8; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation.Setter; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; import org.apache.kafka.streams.processor.internals.ProcessorRecordContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ProcessorRecordContextSetter implements Setter { +public class ProcessorRecordContextSetter implements CarrierSetter { private static final Logger log = LoggerFactory.getLogger(ProcessorRecordContextSetter.class); public static final ProcessorRecordContextSetter PR_SETTER = new ProcessorRecordContextSetter(); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java index 1a2f5bf642b..88d88cbb959 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java @@ -2,11 +2,11 @@ import static java.nio.charset.StandardCharsets.UTF_8; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation.Setter; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; import org.apache.kafka.streams.processor.internals.StampedRecord; -public class StampedRecordContextSetter implements Setter { +public class StampedRecordContextSetter implements CarrierSetter { public static final StampedRecordContextSetter SR_SETTER = new StampedRecordContextSetter(); @Override diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java index 11974e69656..b29aaae39eb 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty38.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.jboss.netty.handler.codec.http.HttpHeaders; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java index e279e489055..5f23ca3d4b5 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty40.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.netty.handler.codec.http.HttpHeaders; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java index 37c0b3b90b2..e8c9b1e24fd 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty41.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.netty.handler.codec.http.HttpHeaders; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java index f563715ca4b..be6b7d5591d 100644 --- a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java +++ b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.okhttp2; import com.squareup.okhttp.Request; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { +public class RequestBuilderInjectAdapter implements CarrierSetter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java index 8677f8a3e23..d8acd7d44dd 100644 --- a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java +++ b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.okhttp3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import okhttp3.Request; @@ -10,7 +10,7 @@ * @author Pavol Loffay */ @ParametersAreNonnullByDefault -public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { +public class RequestBuilderInjectAdapter implements CarrierSetter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java index 0c8936f7a19..ad6042d0f0e 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentelemetry; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -51,7 +52,7 @@ public void inject(final Context context, final C carrier, final Setter s @Override public Context extract(final Context context, final C carrier, final Getter getter) { final AgentSpanContext agentContext = - tracer.propagate().extract(carrier, new OtelGetter<>(getter)); + extractContextAndGetSpanContext(carrier, new OtelGetter<>(getter)); return TracingContextUtils.withSpan( DefaultSpan.create(converter.toSpanContext(agentContext)), context); } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java index 503472d56da..99122724ab6 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java @@ -1,9 +1,11 @@ package datadog.trace.instrumentation.opentracing31; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.opentracing.propagation.TextMap; +import javax.annotation.ParametersAreNonnullByDefault; -class OTTextMapSetter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +class OTTextMapSetter implements CarrierSetter { static final OTTextMapSetter INSTANCE = new OTTextMapSetter(); @Override diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java index 6cc2828e66d..5997127b619 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentracing31; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -63,9 +64,8 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext tagContext = - tracer - .propagate() - .extract((TextMap) carrier, ContextVisitors.stringValuesEntrySet()); + extractContextAndGetSpanContext( + (TextMap) carrier, ContextVisitors.stringValuesEntrySet()); return converter.toSpanContext(tagContext); } else { diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java index 389c6e1b2e4..74040c1a10b 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java @@ -1,9 +1,11 @@ package datadog.trace.instrumentation.opentracing32; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.opentracing.propagation.TextMapInject; +import javax.annotation.ParametersAreNonnullByDefault; -class OTTextMapInjectSetter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +class OTTextMapInjectSetter implements CarrierSetter { static final OTTextMapInjectSetter INSTANCE = new OTTextMapInjectSetter(); @Override diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java index dfd3703d049..acb4b8c5e67 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentracing32; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -75,9 +76,8 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMapExtract) { final AgentSpanContext tagContext = - tracer - .propagate() - .extract((TextMapExtract) carrier, ContextVisitors.stringValuesEntrySet()); + extractContextAndGetSpanContext( + (TextMapExtract) carrier, ContextVisitors.stringValuesEntrySet()); return converter.toSpanContext(tagContext); } else { diff --git a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java index 54412feb6b7..bbef0b767a9 100644 --- a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java @@ -2,7 +2,7 @@ import static datadog.trace.instrumentation.pekkohttp.PekkoHttpClientDecorator.DECORATE; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.pekko.http.javadsl.model.headers.RawHeader; @@ -33,7 +33,7 @@ public Void apply(final Try result) { } } - public static class PekkoHttpHeaders implements AgentPropagation.Setter { + public static class PekkoHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the PekkoHttpHeaders object was created? private final boolean hadSpan; diff --git a/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java index 2034b320641..0856a970f4b 100644 --- a/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.playws; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import play.shaded.ahc.org.asynchttpclient.Request; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java index baf0985199c..c3d1797c4fc 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.rabbitmq.amqp; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_COMMAND; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_EXCHANGE; @@ -206,7 +206,9 @@ public static AgentScope startReceivingSpan( final Map headers = propagate && null != properties ? properties.getHeaders() : null; AgentSpanContext parentContext = - null != headers ? propagate().extract(headers, ContextVisitors.objectValuesMap()) : null; + null != headers + ? extractContextAndGetSpanContext(headers, ContextVisitors.objectValuesMap()) + : null; // TODO: check dynamically bound queues - // https://github.com/DataDog/dd-trace-java/pull/2955#discussion_r677787875 diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java index 7b68605f1f4..88b8df498fa 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.rabbitmq.amqp; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter> { +public class TextMapInjectAdapter implements CarrierSetter> { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java index e16c7b0fa89..9a18009c6e9 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.servlet; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.servlet.ServletRequest; /** Inject into request attributes since the request headers can't be modified. */ @ParametersAreNonnullByDefault -public class ServletRequestSetter implements AgentPropagation.Setter { +public class ServletRequestSetter implements CarrierSetter { public static final ServletRequestSetter SETTER = new ServletRequestSetter(); @Override diff --git a/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java b/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java index 4f0c6c2a153..edc4bcfe589 100644 --- a/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.springmessaging; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.springmessaging.SpringMessageDecorator.DECORATE; import static datadog.trace.instrumentation.springmessaging.SpringMessageDecorator.SPRING_INBOUND; @@ -64,7 +64,7 @@ public static AgentScope onEnter( parentContext = parent.context(); } else { // otherwise try to re-extract the message context to avoid disconnected trace - parentContext = propagate().extract(message, GETTER); + parentContext = extractContextAndGetSpanContext(message, GETTER); } AgentSpan span = startSpan(SPRING_INBOUND, parentContext); DECORATE.afterStart(span); diff --git a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java index f5345ad836d..f418f546200 100644 --- a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java +++ b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.synapse3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.synapse.transport.passthru.TargetRequest; @ParametersAreNonnullByDefault -public final class TargetRequestInjectAdapter implements AgentPropagation.Setter { +public final class TargetRequestInjectAdapter implements CarrierSetter { public static final TargetRequestInjectAdapter SETTER = new TargetRequestInjectAdapter(); @Override diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy index e74ded29fe4..dcb0d6a2292 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy @@ -34,7 +34,7 @@ import java.util.concurrent.TimeoutException import java.util.concurrent.atomic.AtomicReference import static datadog.trace.agent.test.server.http.HttpServletRequestExtractAdapter.GETTER -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan import static org.eclipse.jetty.http.HttpMethod.CONNECT import static org.eclipse.jetty.http.HttpMethod.GET @@ -379,13 +379,13 @@ class TestHttpServer implements AutoCloseable { isDDServer = Boolean.parseBoolean(request.getHeader("is-dd-server")) } if (isDDServer) { - final AgentSpanContext extractedContext = propagate().extract(req.orig, GETTER) + final AgentSpanContext extractedContext = extractContextAndGetSpanContext(req.orig, GETTER) if (extractedContext != null) { - startSpan("test-http-server", extractedContext) + startSpan("test", "test-http-server", extractedContext) .setTag("path", request.path) .setTag(Tags.SPAN_KIND, Tags.SPAN_KIND_SERVER).finish() } else { - startSpan("test-http-server") + startSpan("test", "test-http-server") .setTag("path", request.path) .setTag(Tags.SPAN_KIND, Tags.SPAN_KIND_SERVER).finish() } diff --git a/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java b/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java index f1658e0c11c..1c070167377 100644 --- a/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java +++ b/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java @@ -3,6 +3,7 @@ import static java.util.concurrent.TimeUnit.MICROSECONDS; import static java.util.concurrent.TimeUnit.SECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; @@ -16,6 +17,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.annotation.ParametersAreNonnullByDefault; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -158,11 +160,11 @@ public void forEachKey(T carrier, AgentPropagation.KeyClassifier classifier) { } } - private static final AgentPropagation.Setter> MAP_SETTER = - new MapContextSetter<>(); + private static final CarrierSetter> MAP_SETTER = new MapContextSetter<>(); + @ParametersAreNonnullByDefault private static final class MapContextSetter> - implements AgentPropagation.Setter { + implements CarrierSetter { @Override public void set(T carrier, String key, String value) { carrier.put(key, value); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 4428c446632..5ab4e523b24 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -54,7 +54,6 @@ import datadog.trace.api.time.SystemTimeSource; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentHistogram; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; @@ -227,7 +226,6 @@ public static CoreTracerBuilder builder() { private final SortedSet interceptors = new ConcurrentSkipListSet<>(Comparator.comparingInt(TraceInterceptor::priority)); - private final AgentPropagation propagation; private final boolean logs128bTraceIdEnabled; private final InstrumentationGateway instrumentationGateway; @@ -713,9 +711,6 @@ private CoreTracer( sharedCommunicationObjects.whenReady(this.dataStreamsMonitoring::start); - // TODO Need to be removed - this.propagation = AgentTracer.NOOP_TRACER.propagate(); - // Register context propagators HttpCodec.Extractor tracingExtractor = extractor == null ? HttpCodec.createExtractor(config, this::captureTraceConfig) : extractor; @@ -987,11 +982,6 @@ public AgentScope activeScope() { return scopeManager.active(); } - @Override - public AgentPropagation propagate() { - return this.propagation; - } - @Override public AgentSpanContext notifyExtensionStart(Object event) { return LambdaHandler.notifyStartInvocation(this, event); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java index e39f0745851..910449b7dd1 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java @@ -4,6 +4,7 @@ import static datadog.trace.api.TracePropagationStyle.B3SINGLE; import static datadog.trace.core.propagation.HttpCodec.firstHeaderValue; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -11,7 +12,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.ArrayList; import java.util.Arrays; @@ -112,7 +112,7 @@ public B3MultiInjector(boolean paddingEnabled) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { final String injectedTraceId = getInjectedTraceId(context); final String injectedSpanId = getInjectedSpanId(context); setter.set(carrier, TRACE_ID_KEY, injectedTraceId); @@ -137,7 +137,7 @@ public B3SingleInjector(boolean paddingEnabled) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { final String injectedTraceId = getInjectedTraceId(context); final String injectedSpanId = getInjectedSpanId(context); final StringBuilder injectedB3IdBuilder = new StringBuilder(100); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java index 9624a54a50a..6723dfdbc8c 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java @@ -7,6 +7,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -14,7 +15,6 @@ import datadog.trace.api.DDTraceId; import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.core.DDSpanContext; import datadog.trace.core.propagation.PropagationTags.HeaderType; @@ -55,7 +55,7 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { setter.set(carrier, TRACE_ID_KEY, context.getTraceId().toString()); setter.set(carrier, SPAN_ID_KEY, DDSpanId.toString(context.getSpanId())); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java index 0d349a4a858..f7b8b04a0b9 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java @@ -3,6 +3,7 @@ import static datadog.trace.api.TracePropagationStyle.HAYSTACK; import static datadog.trace.core.propagation.HttpCodec.firstHeaderValue; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD64bTraceId; import datadog.trace.api.DDSpanId; @@ -10,7 +11,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import de.thetaphi.forbiddenapis.SuppressForbidden; import java.util.Map; @@ -63,7 +63,7 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { try { // Given that Haystack uses a 128-bit UUID/GUID for all ID representations, need to convert // from 64-bit BigInteger diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java index 120d14f7ee5..f1e65298d24 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java @@ -4,6 +4,7 @@ import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT; import static datadog.trace.core.propagation.DatadogHttpCodec.SPAN_ID_KEY; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DD64bTraceId; @@ -51,8 +52,7 @@ public class HttpCodec { static final String CF_CONNECTING_IP_V6_KEY = "cf-connecting-ipv6"; public interface Injector { - void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter); + void inject(final DDSpanContext context, final C carrier, final CarrierSetter setter); } /** This interface defines propagated context extractor. */ @@ -184,7 +184,7 @@ public CompoundInjector(final List injectors) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { log.debug("Inject context {}", context); for (final Injector injector : injectors) { injector.inject(context, carrier, setter); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java index e9be9f7a257..5d6924ea69e 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java @@ -1,9 +1,9 @@ package datadog.trace.core.propagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.function.Supplier; import org.slf4j.Logger; @@ -64,8 +64,7 @@ public boolean accept(String key, String value) { public static final HttpCodec.Injector INJECTOR = new HttpCodec.Injector() { @Override - public void inject( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) {} + public void inject(DDSpanContext context, C carrier, CarrierSetter setter) {} }; public static HttpCodec.Extractor newExtractor( diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java index 4ae2fc4efee..98157a2b135 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java @@ -8,6 +8,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -18,7 +19,6 @@ import datadog.trace.api.internal.util.LongStringUtils; import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.api.sampling.SamplingMechanism; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.core.DDSpanContext; import java.util.Map; @@ -63,14 +63,13 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { injectTraceParent(context, carrier, setter); injectTraceState(context, carrier, setter); injectBaggage(context, carrier, setter); } - private void injectTraceParent( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectTraceParent(DDSpanContext context, C carrier, CarrierSetter setter) { StringBuilder sb = new StringBuilder(TRACE_PARENT_LENGTH); sb.append("00-"); sb.append(context.getTraceId().toHexString()); @@ -80,8 +79,7 @@ private void injectTraceParent( setter.set(carrier, TRACE_PARENT_KEY, sb.toString()); } - private void injectTraceState( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectTraceState(DDSpanContext context, C carrier, CarrierSetter setter) { PropagationTags propagationTags = context.getPropagationTags(); if (propagationTags.getLastParentId() == null) { if (context.isRemote()) { @@ -100,8 +98,7 @@ private void injectTraceState( } } - private void injectBaggage( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectBaggage(DDSpanContext context, C carrier, CarrierSetter setter) { long e2eStart = context.getEndToEndStartTime(); if (e2eStart > 0) { setter.set(carrier, E2E_START_KEY, Long.toString(NANOSECONDS.toMillis(e2eStart))); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java index 880f84e1738..f2396d83706 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java @@ -7,6 +7,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD64bTraceId; import datadog.trace.api.DDSpanId; @@ -15,7 +16,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.Map; import java.util.TreeMap; @@ -68,7 +68,7 @@ public Injector(Map invertedBaggageMapping) { } @Override - public void inject(DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + public void inject(DDSpanContext context, C carrier, CarrierSetter setter) { long e2eStart = context.getEndToEndStartTime(); StringBuilder buf = diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayPropagator.java index e8ddd4831ec..1a706306781 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayPropagator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayPropagator.java @@ -47,7 +47,7 @@ public void inject(Context context, C carrier, CarrierSetter setter) { if (spanContext instanceof DDSpanContext) { DDSpanContext ddSpanContext = (DDSpanContext) spanContext; ddSpanContext.getTraceCollector().setSamplingPriorityIfNecessary(); - this.injector.inject(ddSpanContext, carrier, setter::set); + this.injector.inject(ddSpanContext, carrier, setter); } } diff --git a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java index f5fda25adf8..cd7fae33672 100644 --- a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java +++ b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java @@ -1,5 +1,6 @@ package datadog.trace.lambda; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static java.util.concurrent.TimeUnit.SECONDS; import com.squareup.moshi.JsonAdapter; @@ -84,15 +85,13 @@ public static AgentSpanContext notifyStartInvocation(CoreTracer tracer, Object e .execute()) { if (response.isSuccessful()) { - return tracer - .propagate() - .extract( - response.headers(), - (carrier, classifier) -> { - for (String headerName : carrier.names()) { - classifier.accept(headerName, carrier.get(headerName)); - } - }); + return extractContextAndGetSpanContext( + response.headers(), + (carrier, classifier) -> { + for (String headerName : carrier.names()) { + classifier.accept(headerName, carrier.get(headerName)); + } + }); } } catch (Throwable ignored) { log.error("could not reach the extension"); diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy index ce7dd5deba0..b38482e3c6d 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy @@ -1,8 +1,11 @@ package datadog.trace.core.propagation -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation +import datadog.context.propagation.CarrierSetter -class MapSetter implements AgentPropagation.Setter> { +import javax.annotation.ParametersAreNonnullByDefault + +@ParametersAreNonnullByDefault +class MapSetter implements CarrierSetter> { static final INSTANCE = new MapSetter() @Override diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy index 20a6ff8942d..9ba0cdc46c1 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy @@ -83,7 +83,7 @@ class TracingPropagatorTest extends DDCoreSpecification { given: def sampler = new ControllableSampler() def tracer = tracerBuilder().writer(new LoggingWriter()).sampler(sampler).build() - def setter = Mock(AgentPropagation.Setter) + def setter = Mock(CarrierSetter) def carrier = new Object() when: @@ -118,7 +118,7 @@ class TracingPropagatorTest extends DDCoreSpecification { given: def sampler = new ControllableSampler() def tracer = tracerBuilder().writer(new LoggingWriter()).sampler(sampler).build() - def setter = Mock(AgentPropagation.Setter) + def setter = Mock(CarrierSetter) def carrier = new Object() when: diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index 07c86816ca8..fdea6629942 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -1,8 +1,10 @@ package datadog.opentracing; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.GlobalTracer; @@ -494,7 +496,7 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext tagContext = - tracer.propagate().extract((TextMap) carrier, new TextMapGetter((TextMap) carrier)); + extractContextAndGetSpanContext((TextMap) carrier, new TextMapGetter((TextMap) carrier)); return converter.toSpanContext(tagContext); } else { @@ -538,7 +540,7 @@ public void close() { tracer.close(); } - private static class TextMapSetter implements AgentPropagation.Setter { + private static class TextMapSetter implements CarrierSetter { static final TextMapSetter INSTANCE = new TextMapSetter(); @Override diff --git a/internal-api/build.gradle b/internal-api/build.gradle index 164267028cd..3a4b1586855 100644 --- a/internal-api/build.gradle +++ b/internal-api/build.gradle @@ -78,7 +78,6 @@ excludedClassesCoverage += [ "datadog.trace.bootstrap.instrumentation.api.AgentSpanContext", "datadog.trace.bootstrap.instrumentation.api.AgentTracer", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentHistogram", - "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentPropagation", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentTraceCollector", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTraceConfig", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTracerAPI", diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java index 091c7465260..1e3548505a0 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java @@ -4,36 +4,36 @@ import static datadog.context.propagation.Concern.withPriority; import datadog.context.Context; -import datadog.context.propagation.CarrierSetter; import datadog.context.propagation.CarrierVisitor; import datadog.context.propagation.Concern; import datadog.context.propagation.Propagators; import java.util.function.BiConsumer; import javax.annotation.ParametersAreNonnullByDefault; -public interface AgentPropagation { - Concern TRACING_CONCERN = named("tracing"); - Concern XRAY_TRACING_CONCERN = named("tracing-xray"); - Concern STANDALONE_ASM_CONCERN = named("asm-standalone"); +public final class AgentPropagation { + public static final Concern TRACING_CONCERN = named("tracing"); + public static final Concern XRAY_TRACING_CONCERN = named("tracing-xray"); + public static final Concern STANDALONE_ASM_CONCERN = named("asm-standalone"); // TODO DSM propagator should run after the other propagators as it stores the pathway context // TODO into the span context for now. Remove priority after the migration is complete. - Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110); + public static final Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110); - interface Setter extends CarrierSetter { - void set(C carrier, String key, String value); - } + private AgentPropagation() {} - default AgentSpanContext.Extracted extract(final C carrier, final ContextVisitor getter) { + /** @deprecated Use {@link Propagators} API instead. */ + @Deprecated + public static AgentSpanContext.Extracted extractContextAndGetSpanContext( + final C carrier, final ContextVisitor getter) { Context extracted = Propagators.defaultPropagator().extract(Context.root(), carrier, getter); AgentSpan extractedSpan = AgentSpan.fromContext(extracted); return extractedSpan == null ? null : (AgentSpanContext.Extracted) extractedSpan.context(); } - interface KeyClassifier { + public interface KeyClassifier { boolean accept(String key, String value); } - interface ContextVisitor extends CarrierVisitor { + public interface ContextVisitor extends CarrierVisitor { void forEachKey(C carrier, KeyClassifier classifier); @ParametersAreNonnullByDefault diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java index 479f6b89307..a3212cfab55 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java @@ -177,10 +177,6 @@ public static void setAsyncPropagationEnabled(boolean asyncPropagationEnabled) { get().setAsyncPropagationEnabled(asyncPropagationEnabled); } - public static AgentPropagation propagate() { - return get().propagate(); - } - /** * Returns the noop span instance. * @@ -322,8 +318,6 @@ AgentSpan startSpan( AgentScope activeScope(); - AgentPropagation propagate(); - default AgentSpan blackholeSpan() { final AgentSpan active = activeSpan(); return new BlackHoleSpan(active != null ? active.getTraceId() : DDTraceId.ZERO); @@ -487,11 +481,6 @@ public AgentScope activeScope() { return null; } - @Override - public AgentPropagation propagate() { - return NoopAgentPropagation.INSTANCE; - } - @Override public AgentSpan blackholeSpan() { return NoopSpan.INSTANCE; // no-op tracer stays no-op @@ -620,10 +609,6 @@ public void updatePreferredServiceName(String serviceName) { } } - static class NoopAgentPropagation implements AgentPropagation { - static final NoopAgentPropagation INSTANCE = new NoopAgentPropagation(); - } - public static class NoopAgentTraceCollector implements AgentTraceCollector { public static final NoopAgentTraceCollector INSTANCE = new NoopAgentTraceCollector(); From 6750ca17fc1395ac42d26698fb7c1664124441c9 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Mon, 24 Feb 2025 11:03:29 +0100 Subject: [PATCH 2/2] feat(core): Refactor disabled tracing propagator --- .../java/datadog/trace/core/CoreTracer.java | 18 ++----- .../ApmTracingDisabledPropagator.java | 41 --------------- .../core/propagation/TracingPropagator.java | 12 ++++- .../propagation/TracingPropagatorTest.groovy | 50 +++++++++++++++---- .../instrumentation/api/AgentPropagation.java | 1 - 5 files changed, 55 insertions(+), 67 deletions(-) delete mode 100644 dd-trace-core/src/main/java/datadog/trace/core/propagation/ApmTracingDisabledPropagator.java diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 5ab4e523b24..1c40901945b 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -6,7 +6,6 @@ import static datadog.trace.api.DDTags.DSM_ENABLED; import static datadog.trace.api.DDTags.PROFILING_CONTEXT_ENGINE; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; -import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.STANDALONE_ASM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.TRACING_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.XRAY_TRACING_CONCERN; import static datadog.trace.common.metrics.MetricsAggregatorFactory.createMetricsAggregator; @@ -85,7 +84,6 @@ import datadog.trace.core.monitor.HealthMetrics; import datadog.trace.core.monitor.MonitoringImpl; import datadog.trace.core.monitor.TracerHealthMetrics; -import datadog.trace.core.propagation.ApmTracingDisabledPropagator; import datadog.trace.core.propagation.ExtractedContext; import datadog.trace.core.propagation.HttpCodec; import datadog.trace.core.propagation.PropagationTags; @@ -714,19 +712,11 @@ private CoreTracer( // Register context propagators HttpCodec.Extractor tracingExtractor = extractor == null ? HttpCodec.createExtractor(config, this::captureTraceConfig) : extractor; - TracingPropagator tracingPropagator = new TracingPropagator(injector, tracingExtractor); - // Check if apm tracing is disabled: - // If disabled, use the APM tracing disabled propagator by default that will limit tracing - // concern - // injection and delegate to the tracing propagator if needed, - // If disabled, the most common case, use the usual tracing propagator by default. - boolean apmTracingDisabled = !config.isApmTracingEnabled(); - boolean dsm = config.isDataStreamsEnabled(); - Propagators.register( - STANDALONE_ASM_CONCERN, new ApmTracingDisabledPropagator(), apmTracingDisabled); - Propagators.register(TRACING_CONCERN, tracingPropagator, !apmTracingDisabled); + TracingPropagator tracingPropagator = + new TracingPropagator(config.isApmTracingEnabled(), injector, tracingExtractor); + Propagators.register(TRACING_CONCERN, tracingPropagator); Propagators.register(XRAY_TRACING_CONCERN, new XRayPropagator(config), false); - if (dsm) { + if (config.isDataStreamsEnabled()) { Propagators.register(DSM_CONCERN, this.dataStreamsMonitoring.propagator()); } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ApmTracingDisabledPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/ApmTracingDisabledPropagator.java deleted file mode 100644 index 8dfe988d6a6..00000000000 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/ApmTracingDisabledPropagator.java +++ /dev/null @@ -1,41 +0,0 @@ -package datadog.trace.core.propagation; - -import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.TRACING_CONCERN; -import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromContext; - -import datadog.context.Context; -import datadog.context.propagation.CarrierSetter; -import datadog.context.propagation.CarrierVisitor; -import datadog.context.propagation.Propagator; -import datadog.context.propagation.Propagators; -import datadog.trace.api.ProductTraceSource; -import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; -import datadog.trace.core.DDSpanContext; -import javax.annotation.ParametersAreNonnullByDefault; - -@ParametersAreNonnullByDefault -public class ApmTracingDisabledPropagator implements Propagator { - @Override - public void inject(Context context, C carrier, CarrierSetter setter) { - // Stop propagation if no product events, stop propagation - AgentSpan span; - if ((span = fromContext(context)) != null) { - AgentSpanContext spanContext = span.context(); - if (spanContext instanceof DDSpanContext) { - DDSpanContext ddSpanContext = (DDSpanContext) spanContext; - if (ddSpanContext.getPropagationTags().getTraceSource() == ProductTraceSource.UNSET) { - return; - } - } - // Only propagate tracing if trace source set - Propagators.forConcern(TRACING_CONCERN).inject(span, carrier, setter); - } - } - - @Override - public Context extract(Context context, C carrier, CarrierVisitor visitor) { - // Only propagate tracing if trace source set - return Propagators.forConcern(TRACING_CONCERN).extract(context, carrier, visitor); - } -} diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java index fb623d35107..89bb8ea5d59 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java @@ -1,5 +1,6 @@ package datadog.trace.core.propagation; +import static datadog.trace.api.ProductTraceSource.UNSET; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; @@ -19,16 +20,19 @@ /** Propagator for tracing concern. */ @ParametersAreNonnullByDefault public class TracingPropagator implements Propagator { + private final boolean enabled; private final Injector injector; private final Extractor extractor; /** * Constructor. * + * @param enabled Whether APM tracing is enabled. * @param injector The {@link Injector} used for tracing context injection. * @param extractor The {@link Extractor} used for tracing context extraction. */ - public TracingPropagator(Injector injector, Extractor extractor) { + public TracingPropagator(boolean enabled, Injector injector, Extractor extractor) { + this.enabled = enabled; this.injector = injector; this.extractor = extractor; } @@ -46,8 +50,12 @@ public void inject(Context context, C carrier, CarrierSetter setter) { AgentSpanContext spanContext = span.context(); if (spanContext instanceof DDSpanContext) { DDSpanContext ddSpanContext = (DDSpanContext) spanContext; + // Stop injection if tracing is disabled and tracing span is coming from tracing only + if (!this.enabled && ddSpanContext.getPropagationTags().getTraceSource() == UNSET) { + return; + } ddSpanContext.getTraceCollector().setSamplingPriorityIfNecessary(); - this.injector.inject(ddSpanContext, carrier, setter::set); + this.injector.inject(ddSpanContext, carrier, setter); } } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy index 9ba0cdc46c1..2b700f8c6e8 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy @@ -9,9 +9,13 @@ import datadog.trace.common.writer.LoggingWriter import datadog.trace.core.ControllableSampler import datadog.trace.core.test.DDCoreSpecification +import static datadog.trace.api.ProductTraceSource.ASM +import static datadog.trace.api.ProductTraceSource.UNSET import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_KEEP import static datadog.trace.api.sampling.PrioritySampling.USER_DROP import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.XRAY_TRACING_CONCERN +import static datadog.trace.bootstrap.instrumentation.api.Tags.PROPAGATED_TRACE_SOURCE +import static datadog.trace.core.propagation.DatadogHttpCodec.SAMPLING_PRIORITY_KEY class TracingPropagatorTest extends DDCoreSpecification { HttpCodec.Injector injector @@ -19,9 +23,9 @@ class TracingPropagatorTest extends DDCoreSpecification { TracingPropagator propagator def setup() { - injector = Mock(HttpCodec.Injector) - extractor = Mock(HttpCodec.Extractor) - this.propagator = new TracingPropagator(injector, extractor) + this.injector = Mock(HttpCodec.Injector) + this.extractor = Mock(HttpCodec.Extractor) + this.propagator = new TracingPropagator(true, injector, extractor) } def 'test tracing propagator context injection'() { @@ -35,7 +39,7 @@ class TracingPropagatorTest extends DDCoreSpecification { this.propagator.inject(span, carrier, setter) then: - 1 * injector.inject(span.context(), carrier, _) + 1 * this.injector.inject(span.context(), carrier, _) cleanup: span.finish() @@ -53,7 +57,7 @@ class TracingPropagatorTest extends DDCoreSpecification { this.propagator.extract(context, carrier, getter) then: - 1 * extractor.extract(carrier, _) + 1 * this.extractor.extract(carrier, _) } def 'span priority set when injecting'() { @@ -71,7 +75,7 @@ class TracingPropagatorTest extends DDCoreSpecification { then: root.getSamplingPriority() == SAMPLER_KEEP as int child.getSamplingPriority() == root.getSamplingPriority() - 1 * setter.set(carrier, DatadogHttpCodec.SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) + 1 * setter.set(carrier, SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) cleanup: child.finish() @@ -94,7 +98,7 @@ class TracingPropagatorTest extends DDCoreSpecification { then: root.getSamplingPriority() == SAMPLER_KEEP as int child.getSamplingPriority() == root.getSamplingPriority() - 1 * setter.set(carrier, DatadogHttpCodec.SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) + 1 * setter.set(carrier, SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) when: sampler.nextSamplingPriority = PrioritySampling.SAMPLER_DROP as int @@ -105,7 +109,7 @@ class TracingPropagatorTest extends DDCoreSpecification { root.getSamplingPriority() == SAMPLER_KEEP as int child.getSamplingPriority() == root.getSamplingPriority() child2.getSamplingPriority() == root.getSamplingPriority() - 1 * setter.set(carrier, DatadogHttpCodec.SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) + 1 * setter.set(carrier, SAMPLING_PRIORITY_KEY, String.valueOf(SAMPLER_KEEP)) cleanup: child.finish() @@ -130,7 +134,7 @@ class TracingPropagatorTest extends DDCoreSpecification { then: root.getSamplingPriority() == USER_DROP as int child.getSamplingPriority() == root.getSamplingPriority() - 1 * setter.set(carrier, DatadogHttpCodec.SAMPLING_PRIORITY_KEY, String.valueOf(USER_DROP)) + 1 * setter.set(carrier, SAMPLING_PRIORITY_KEY, String.valueOf(USER_DROP)) cleanup: child.finish() @@ -138,6 +142,34 @@ class TracingPropagatorTest extends DDCoreSpecification { tracer.close() } + def 'test propagation when tracing is disabled'() { + setup: + this.propagator = new TracingPropagator(tracingEnabled, injector, extractor) + def tracer = tracerBuilder().build() + def span = tracer.buildSpan('test', 'operation').start() + span.setTag(PROPAGATED_TRACE_SOURCE, product) + def setter = Mock(CarrierSetter) + def carrier = new Object() + + when: + this.propagator.inject(span, carrier, setter) + + then: + injected * this.injector.inject(span.context(), carrier, _) + + cleanup: + span.finish() + tracer.close() + + where: + tracingEnabled | product + true | ASM + true | UNSET + false | ASM + false | UNSET + injected = tracingEnabled || product != UNSET ? 1 : 0 + } + def 'test AWS X-Ray propagator'() { setup: def tracer = tracerBuilder().build() diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java index 1e3548505a0..e138d72d042 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java @@ -13,7 +13,6 @@ public final class AgentPropagation { public static final Concern TRACING_CONCERN = named("tracing"); public static final Concern XRAY_TRACING_CONCERN = named("tracing-xray"); - public static final Concern STANDALONE_ASM_CONCERN = named("asm-standalone"); // TODO DSM propagator should run after the other propagators as it stores the pathway context // TODO into the span context for now. Remove priority after the migration is complete. public static final Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110);