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 66cd1e7487b0..db1d485cfff9 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 @@ -3,6 +3,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import java.net.HttpURLConnection; +@ParametersAreNonnullByDefault public class HeadersInjectAdapter implements AgentPropagation.Setter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); 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 8395631b9f3e..8c637394ad41 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 @@ -1,7 +1,6 @@ package datadog.trace.bootstrap.instrumentation.rmi; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; - +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.io.IOException; @@ -33,7 +32,7 @@ public Map getContext() { public static ContextPayload from(final AgentSpan span) { final ContextPayload payload = new ContextPayload(); - propagate().inject(span, payload, SETTER); + Propagators.defaultPropagator().inject(span, payload, SETTER); return payload; } @@ -54,6 +53,7 @@ public void write(final ObjectOutput out) throws IOException { out.writeObject(context); } + @ParametersAreNonnullByDefault public static class InjectAdapter implements AgentPropagation.Setter { @Override public void set(final ContextPayload carrier, final String key, final String value) { 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 9e460bea0a94..212cf3804b34 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 @@ -1,8 +1,7 @@ package datadog.trace.civisibility.domain.buildsystem; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; - import datadog.communication.ddagent.TracerVersion; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.civisibility.CIConstants; @@ -33,10 +32,13 @@ import datadog.trace.util.Strings; import java.net.InetSocketAddress; import java.nio.file.Path; -import java.util.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; import java.util.concurrent.atomic.LongAdder; import java.util.function.Consumer; -import javax.annotation.Nullable; public class BuildSystemModuleImpl extends AbstractTestModule implements BuildSystemModule { @@ -106,6 +108,7 @@ public BuildSystemModuleImpl( setTag(Tags.TEST_COMMAND, startCommand); } + @ParametersAreNonnullByDefault private static final class ChildProcessPropertiesPropagationSetter implements AgentPropagation.Setter> { static final AgentPropagation.Setter> INSTANCE = @@ -213,7 +216,7 @@ private Map getPropertiesPropagatedToChildProcess( } // propagate module span context to child processes - propagate() + Propagators.defaultPropagator() .inject(span, propagatedSystemProperties, ChildProcessPropertiesPropagationSetter.INSTANCE); return propagatedSystemProperties; 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 6f38be0d30b4..c3da565c4fe0 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,10 +3,12 @@ import static datadog.opentelemetry.shim.trace.OtelSpanContext.fromRemote; import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT; +import datadog.context.propagation.Propagators; import datadog.opentelemetry.shim.context.OtelContext; import datadog.opentelemetry.shim.trace.OtelExtractedContext; import datadog.opentelemetry.shim.trace.OtelSpan; import datadog.trace.api.TracePropagationStyle; +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; @@ -19,7 +21,6 @@ import io.opentelemetry.context.propagation.TextMapGetter; import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.context.propagation.TextMapSetter; -import java.util.Collection; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; @@ -36,11 +37,7 @@ public void inject(Context context, @Nullable C carrier, TextMapSetter se if (carrier == null) { return; } - Span span = Span.fromContext(context); - if (span.getSpanContext().isValid()) { - AgentSpanContext agentSpanContext = OtelExtractedContext.extract(context); - AgentTracer.propagate().inject(agentSpanContext, carrier, setter::set); - } + Propagators.defaultPropagator().inject(convertContext(context), carrier, setter::set); } @Override @@ -66,6 +63,14 @@ public Context extract(Context context, @Nullable C carrier, TextMapGetter AgentSpan delegate --> with() to inflate as full + // context if baggage + AgentSpanContext extract = OtelExtractedContext.extract(context); + return AgentSpan.fromSpanContext(extract); + } + /** * Extracts tracestate if {@code tracestate} header is present and extracted context comes from * {@link TracePropagationStyle#TRACECONTEXT} @@ -73,8 +78,8 @@ public Context extract(Context context, @Nullable C carrier, TextMapGetter The carrier type. + * @return The extracted tracestate, or an empty tracestate otherwise. */ private static TraceState extractTraceState( Extracted extracted, C carrier, TextMapGetter getter) { diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java index da3ae4906ea0..095801ef95e2 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java @@ -172,7 +172,7 @@ public AgentSpanContext getAgentSpanContext() { @Override public AgentSpan asAgentSpan() { - return delegate; + return this.delegate; } private static class NoopSpan implements Span { 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 80e473c38200..fcdf7bf7700b 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 @@ -35,7 +35,7 @@ public Void apply(final Try result) { public static class AkkaHttpHeaders implements AgentPropagation.Setter { private HttpRequest request; // Did this request have a span when the AkkaHttpHeaders object was created? - private boolean hadSpan; + private final boolean hadSpan; public AkkaHttpHeaders(final HttpRequest request) { hadSpan = request != null && request.getHeader(HasSpanHeader.class).isPresent(); @@ -51,6 +51,7 @@ public boolean hadSpan() { return hadSpan; } + @ParametersAreNonnullByDefault @Override public void set(final HttpRequest carrier, final String key, final String value) { // Coerce a Scala trait Self type into the correct type diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpSingleRequestInstrumentation.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpSingleRequestInstrumentation.java index ed5c35e7ced0..301d05adb347 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpSingleRequestInstrumentation.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpSingleRequestInstrumentation.java @@ -14,6 +14,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -78,7 +79,7 @@ public static AgentScope methodEnter( DECORATE.onRequest(span, request); if (request != null) { - propagate().inject(span, request, headers); + Propagators.defaultPropagator().inject(span, request, headers); propagate() .injectPathwayContext( span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/SingleRequestAdvice.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/SingleRequestAdvice.java index 8e987bc8ec8e..734ad74717c6 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/SingleRequestAdvice.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/SingleRequestAdvice.java @@ -7,6 +7,7 @@ import akka.http.scaladsl.HttpExt; import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -28,7 +29,7 @@ public static AgentScope methodEnter( AkkaHttpClientDecorator.DECORATE.onRequest(span, request); if (request != null) { - propagate().inject(span, request, headers); + Propagators.defaultPropagator().inject(span, request, headers); propagate() .injectPathwayContext( span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/DelegatingRequestProducer.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/DelegatingRequestProducer.java index c39f1d54fa3b..2ff6fbc75e23 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/DelegatingRequestProducer.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/DelegatingRequestProducer.java @@ -4,6 +4,7 @@ import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE; import static datadog.trace.instrumentation.apachehttpasyncclient.HttpHeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; @@ -34,7 +35,7 @@ public HttpRequest generateRequest() throws IOException, HttpException { final HttpRequest request = delegate.generateRequest(); DECORATE.onRequest(span, new HostAndRequestAsHttpUriRequest(delegate.getTarget(), request)); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 f7ab3e98d9ff..8c9f111f13a2 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,8 +1,10 @@ package datadog.trace.instrumentation.apachehttpasyncclient; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.HttpRequest; +@ParametersAreNonnullByDefault public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HelperMethods.java b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HelperMethods.java index ea4064a1cc06..6301d8e34931 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HelperMethods.java +++ b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HelperMethods.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.apachehttpclient.ApacheHttpClientDecorator.HTTP_REQUEST; import static datadog.trace.instrumentation.apachehttpclient.HttpHeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -45,7 +46,7 @@ private static AgentScope activateHttpSpan(final HttpUriRequest request) { // AWS calls are often signed, so we can't add headers without breaking the signature. if (!awsClientCall) { - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 8e3dddaa5009..42f4866932d6 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,8 +1,10 @@ package datadog.trace.instrumentation.apachehttpclient; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.client.methods.HttpUriRequest; +@ParametersAreNonnullByDefault public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/DelegatingRequestChannel.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/DelegatingRequestChannel.java index 36ae6cfc5c6f..eb3ebfb29224 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/DelegatingRequestChannel.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/DelegatingRequestChannel.java @@ -4,6 +4,7 @@ import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.apachehttpclient5.HttpHeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; @@ -27,7 +28,7 @@ public void sendRequest(HttpRequest request, EntityDetails entityDetails, HttpCo throws HttpException, IOException { DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); delegate.sendRequest(request, entityDetails, context); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HelperMethods.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HelperMethods.java index 64e03fd1b944..144046a5e99e 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HelperMethods.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HelperMethods.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.HTTP_REQUEST; import static datadog.trace.instrumentation.apachehttpclient5.HttpHeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -45,7 +46,7 @@ private static AgentScope activateHttpSpan(final HttpRequest request) { final boolean awsClientCall = request.containsHeader("amz-sdk-invocation-id"); // AWS calls are often signed, so we can't add headers without breaking the signature. if (!awsClientCall) { - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 2b05ecb3f453..598526f990df 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,8 +1,10 @@ package datadog.trace.instrumentation.apachehttpclient5; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.hc.core5.http.HttpRequest; +@ParametersAreNonnullByDefault public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { 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/ClientCallImplInstrumentation.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/ClientCallImplInstrumentation.java index 7c44904aa0cc..b5271f0d2cb1 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/ClientCallImplInstrumentation.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/ClientCallImplInstrumentation.java @@ -16,6 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.agent.tooling.muzzle.Reference; @@ -120,7 +121,7 @@ public static AgentScope before( if (null != responseListener && null != headers) { span = InstrumentationContext.get(ClientCall.class, AgentSpan.class).get(call); if (null != span) { - propagate().inject(span, headers, SETTER); + Propagators.defaultPropagator().inject(span, headers, SETTER); propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); return activateSpan(span); } 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 829035ae3831..332c5cf0f126 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 @@ -2,7 +2,9 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import io.grpc.Metadata; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public final class GrpcInjectAdapter implements AgentPropagation.Setter { public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/EventBridgeInterceptor.java b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/EventBridgeInterceptor.java index a1a975d84910..8d5939e51622 100644 --- a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/EventBridgeInterceptor.java +++ b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/EventBridgeInterceptor.java @@ -8,6 +8,7 @@ import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG; import static datadog.trace.instrumentation.aws.v2.eventbridge.TextMapInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.PathwayContext; @@ -86,7 +87,7 @@ private String getTraceContextToInject( jsonBuilder.append('{'); // Inject trace context - propagate().inject(span, jsonBuilder, SETTER); + Propagators.defaultPropagator().inject(span, jsonBuilder, SETTER); if (traceConfig().isDataStreamsEnabled()) { propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(eventBusName)); 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 dd03362ca556..ff7f760b933e 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,7 +1,9 @@ package datadog.trace.instrumentation.aws.v2.eventbridge; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class TextMapInjectAdapter implements AgentPropagation.Setter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/SnsInterceptor.java b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/SnsInterceptor.java index c0521bbea5ec..def452056124 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/SnsInterceptor.java +++ b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/SnsInterceptor.java @@ -37,7 +37,12 @@ private ByteBuffer getMessageAttributeValueToInject( final AgentSpan span = newSpan(request); StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.append('{'); - propagate().inject(span, jsonBuilder, SETTER, TracePropagationStyle.DATADOG); + propagate() + .inject( + span, + jsonBuilder, + SETTER, + TracePropagationStyle.DATADOG); // TODO Is forcing Datadog encoding on purpose? if (traceConfig().isDataStreamsEnabled()) { propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(snsTopicName)); } diff --git a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/SnsInterceptor.java b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/SnsInterceptor.java index e85295ce4cd5..ca6e320823be 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/SnsInterceptor.java +++ b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/SnsInterceptor.java @@ -8,6 +8,7 @@ import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG; import static datadog.trace.instrumentation.aws.v2.sns.TextMapInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.nio.charset.StandardCharsets; @@ -37,7 +38,7 @@ private SdkBytes getMessageAttributeValueToInject( final AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE); StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.append('{'); - propagate().inject(span, jsonBuilder, SETTER); + Propagators.defaultPropagator().inject(span, jsonBuilder, SETTER); if (traceConfig().isDataStreamsEnabled()) { propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(snsTopicName)); } diff --git a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/AxisTransportInstrumentation.java b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/AxisTransportInstrumentation.java index 695e1525860a..abbdc18332d9 100644 --- a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/AxisTransportInstrumentation.java +++ b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/AxisTransportInstrumentation.java @@ -2,7 +2,6 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; 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.axis2.AxisMessageDecorator.AXIS2_ASYNC_SPAN_KEY; import static datadog.trace.instrumentation.axis2.AxisMessageDecorator.AXIS2_TRANSPORT; @@ -12,6 +11,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.InstrumenterConfig; @@ -77,7 +77,7 @@ public static AgentScope beginTransport(@Advice.Argument(0) final MessageContext message.setProperty("TRANSPORT_HEADERS", headers); } try { - propagate().inject(span, headers, SETTER); + Propagators.defaultPropagator().inject(span, headers, SETTER); } catch (Throwable ignore) { } 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 8b589743d85b..c3e0c8ff48d4 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 @@ -3,6 +3,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import java.util.Map; +@ParametersAreNonnullByDefault public class TextMapInjectAdapter implements AgentPropagation.Setter> { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/CommonsHttpClientInstrumentation.java b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/CommonsHttpClientInstrumentation.java index 7490ca1d39a7..eb8ff4c8bf85 100644 --- a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/CommonsHttpClientInstrumentation.java +++ b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/CommonsHttpClientInstrumentation.java @@ -13,6 +13,7 @@ import com.google.auto.service.AutoService; import datadog.appsec.api.blocking.BlockingException; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.CallDepthThreadLocalMap; @@ -68,7 +69,7 @@ public static AgentScope methodEnter(@Advice.Argument(1) final HttpMethod httpMe DECORATE.afterStart(span); DECORATE.onRequest(span, httpMethod); - propagate().inject(span, httpMethod, SETTER); + Propagators.defaultPropagator().inject(span, httpMethod, SETTER); propagate() .injectPathwayContext( span, httpMethod, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 2f9472487bdb..bcc4467f0cec 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 @@ -4,6 +4,7 @@ import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpMethod; +@ParametersAreNonnullByDefault public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/GoogleHttpClientDecorator.java b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/GoogleHttpClientDecorator.java index 2bbf86d63a6f..f6fd8dcc4751 100644 --- a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/GoogleHttpClientDecorator.java +++ b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/GoogleHttpClientDecorator.java @@ -5,6 +5,7 @@ import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpResponse; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.URIUtils; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; @@ -37,7 +38,7 @@ protected URI url(final HttpRequest httpRequest) throws URISyntaxException { public AgentSpan prepareSpan(AgentSpan span, HttpRequest request) { DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); return span; 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 629369ad9208..c65da9c0cbc6 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 @@ -2,7 +2,9 @@ import com.google.api.client.http.HttpRequest; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class HeadersInjectAdapter implements AgentPropagation.Setter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PublisherInstrumentation.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PublisherInstrumentation.java index 88f76e103cef..6032187eef41 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PublisherInstrumentation.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PublisherInstrumentation.java @@ -19,6 +19,7 @@ import com.google.auto.service.AutoService; import com.google.cloud.pubsub.v1.Publisher; import com.google.pubsub.v1.PubsubMessage; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.ExcludeFilterProvider; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; @@ -80,7 +81,7 @@ public static AgentScope before( sortedTags.put(TYPE_TAG, "google-pubsub"); PubsubMessage.Builder builder = msg.toBuilder(); - propagate().inject(span, builder, SETTER); + Propagators.defaultPropagator().inject(span, builder, SETTER); propagate().injectPathwayContext(span, builder, SETTER, sortedTags); msg = builder.build(); return activateSpan(span); 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 f1ee1e0f7a25..46245ce4b04f 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 @@ -2,7 +2,9 @@ import com.google.pubsub.v1.PubsubMessage; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class TextMapInjectAdapter implements AgentPropagation.Setter { 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/AsyncHttpClientInstrumentation.java b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/AsyncHttpClientInstrumentation.java index 9ba181b0f4e1..0e6c0cca486d 100644 --- a/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/AsyncHttpClientInstrumentation.java +++ b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/AsyncHttpClientInstrumentation.java @@ -13,6 +13,7 @@ import com.google.auto.service.AutoService; import com.ning.http.client.AsyncHandler; import com.ning.http.client.Request; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.InstrumenterConfig; @@ -68,7 +69,7 @@ public static void onEnter( AgentSpan span = startSpan(HTTP_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 c541b03c9b82..946d4b4d4e3f 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 @@ -2,9 +2,10 @@ import com.ning.http.client.Request; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class InjectAdapter implements AgentPropagation.Setter { - 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/ClientCallImplInstrumentation.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/ClientCallImplInstrumentation.java index a2bc91720f10..4cd47a3d67ec 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/ClientCallImplInstrumentation.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/ClientCallImplInstrumentation.java @@ -11,6 +11,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.InstrumentationContext; @@ -92,7 +93,7 @@ public static AgentScope before( @Advice.Local("$$ddSpan") AgentSpan span) { span = InstrumentationContext.get(ClientCall.class, AgentSpan.class).get(call); if (null != span) { - propagate().inject(span, headers, SETTER); + Propagators.defaultPropagator().inject(span, headers, SETTER); propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); return activateSpan(span); } 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 a7910e434453..70cd03568f46 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 @@ -2,9 +2,10 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import io.grpc.Metadata; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public final class GrpcInjectAdapter implements AgentPropagation.Setter { - public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java b/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java index 3a18e2fd7591..63ecc6545116 100644 --- a/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java +++ b/dd-java-agent/instrumentation/http-url-connection/src/main/java/datadog/trace/instrumentation/http_url_connection/HttpUrlConnectionInstrumentation.java @@ -10,6 +10,7 @@ import static net.bytebuddy.matcher.ElementMatchers.isPublic; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.InstrumenterConfig; @@ -85,7 +86,7 @@ public static HttpUrlState methodEnter( if (!state.hasSpan() && !state.isFinished()) { final AgentSpan span = state.start(thiz); if (!connected) { - propagate().inject(span, thiz, SETTER); + Propagators.defaultPropagator().inject(span, thiz, SETTER); propagate() .injectPathwayContext( span, thiz, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HeadersAdvice.java b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HeadersAdvice.java index fb6256516819..8d875b835506 100644 --- a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HeadersAdvice.java +++ b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HeadersAdvice.java @@ -5,6 +5,7 @@ import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.KEEP; import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.net.http.HttpHeaders; @@ -18,7 +19,7 @@ public class HeadersAdvice { public static void methodExit(@Advice.Return(readOnly = false) HttpHeaders headers) { final Map> headerMap = new HashMap<>(headers.map()); final AgentSpan span = activeSpan(); - propagate().inject(span, headerMap, SETTER); + Propagators.defaultPropagator().inject(span, headerMap, SETTER); propagate() .injectPathwayContext( span, headerMap, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 b0c36b30c265..692f4653bca5 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,14 +1,18 @@ package datadog.trace.instrumentation.jaxrs.v1; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; -public final class InjectAdapter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +public final class InjectAdapter + implements AgentPropagation.Setter> { public static final InjectAdapter SETTER = new InjectAdapter(); @Override - public void set(final MultivaluedMap headers, final String key, final String value) { + public void set( + final MultivaluedMap headers, final String key, final String value) { // Don't allow duplicates. headers.putSingle(key, value); } diff --git a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java index b90cbf3bf273..095f7e824e69 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java +++ b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/JaxRsClientV1Instrumentation.java @@ -17,6 +17,7 @@ import com.sun.jersey.api.client.ClientHandler; import com.sun.jersey.api.client.ClientRequest; import com.sun.jersey.api.client.ClientResponse; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -75,7 +76,7 @@ public static AgentScope onEnter( DECORATE.onRequest(span, request); request.getProperties().put(DD_SPAN_ATTRIBUTE, span); - propagate().inject(span, request.getHeaders(), SETTER); + Propagators.defaultPropagator().inject(span, request.getHeaders(), SETTER); propagate() .injectPathwayContext( span, request.getHeaders(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/ClientTracingFilter.java b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/ClientTracingFilter.java index 22b9373a8fd4..44f4122163de 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/ClientTracingFilter.java +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/ClientTracingFilter.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.jaxrs.JaxRsClientDecorator.DECORATE; import static datadog.trace.instrumentation.jaxrs.JaxRsClientDecorator.JAX_RS_CLIENT_CALL; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -28,7 +29,7 @@ public void filter(final ClientRequestContext requestContext) { DECORATE.afterStart(span); DECORATE.onRequest(span, requestContext); - propagate().inject(span, requestContext.getHeaders(), SETTER); + Propagators.defaultPropagator().inject(span, requestContext.getHeaders(), SETTER); propagate() .injectPathwayContext( span, 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 70c8cf828f02..dc555d8acc8b 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,14 +1,18 @@ package datadog.trace.instrumentation.jaxrs; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; -public final class InjectAdapter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +public final class InjectAdapter + implements AgentPropagation.Setter> { public static final InjectAdapter SETTER = new InjectAdapter(); @Override - public void set(final MultivaluedMap headers, final String key, final String value) { + public void set( + final MultivaluedMap headers, final String key, final String value) { // Don't allow duplicates. headers.putSingle(key, value); } diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/src/main/java11/datadog/trace/instrumentation/jetty_client10/SendAdvice.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/src/main/java11/datadog/trace/instrumentation/jetty_client10/SendAdvice.java index fb6073f9c400..135e552c28e0 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/src/main/java11/datadog/trace/instrumentation/jetty_client10/SendAdvice.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-10.0/src/main/java11/datadog/trace/instrumentation/jetty_client10/SendAdvice.java @@ -6,6 +6,7 @@ import static datadog.trace.instrumentation.jetty_client10.JettyClientDecorator.DECORATE; import static datadog.trace.instrumentation.jetty_client10.JettyClientDecorator.HTTP_REQUEST; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -25,7 +26,7 @@ public static AgentSpan methodEnter( responseListeners.add(0, new SpanFinishingCompleteListener(span)); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); return span; diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/SendAdvice.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/SendAdvice.java index 2e09929c4a68..c4cd5a7f8932 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/SendAdvice.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/SendAdvice.java @@ -5,6 +5,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jetty_client12.HeadersInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -20,7 +21,7 @@ public static AgentScope methodEnter(@Advice.This final HttpRequest request) { InstrumentationContext.get(Request.class, AgentSpan.class).put(request, span); JettyClientDecorator.DECORATE.afterStart(span); JettyClientDecorator.DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); return activateSpan(span); diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/src/main/java/datadog/trace/instrumentation/jetty_client91/JettyClientInstrumentation.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/src/main/java/datadog/trace/instrumentation/jetty_client91/JettyClientInstrumentation.java index 5d0349002e64..62957714eb36 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/src/main/java/datadog/trace/instrumentation/jetty_client91/JettyClientInstrumentation.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-9.1/src/main/java/datadog/trace/instrumentation/jetty_client91/JettyClientInstrumentation.java @@ -14,6 +14,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.ExcludeFilterProvider; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; @@ -91,7 +92,7 @@ public static AgentSpan methodEnter( responseListeners.add(0, new SpanFinishingCompleteListener(span)); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 94a91b61d569..d4bc2cf0b783 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,8 +1,10 @@ package datadog.trace.instrumentation.jetty_client; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.eclipse.jetty.client.api.Request; +@ParametersAreNonnullByDefault public class HeadersInjectAdapter implements AgentPropagation.Setter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java index e65eb41726be..94a4d8c14756 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java @@ -13,6 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.api.Config; import datadog.trace.bootstrap.CallDepthThreadLocalMap; @@ -94,7 +95,7 @@ public static AgentScope beforeSend( if (JMSDecorator.canInject(message)) { if (Config.get().isJmsPropagationEnabled() && (null == producerState || !producerState.isPropagationDisabled())) { - propagate().inject(span, message, SETTER); + Propagators.defaultPropagator().inject(span, message, SETTER); } if (TIME_IN_QUEUE_ENABLED) { if (null != producerState) { @@ -141,7 +142,7 @@ public static AgentScope beforeSend( if (JMSDecorator.canInject(message)) { if (Config.get().isJmsPropagationEnabled() && !Config.get().isJmsPropagationDisabledForDestination(destinationName)) { - propagate().inject(span, message, SETTER); + Propagators.defaultPropagator().inject(span, message, SETTER); } if (TIME_IN_QUEUE_ENABLED) { MessageProducerState producerState = 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 3a6ac3a62ca6..d63cc4d6a6a3 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 @@ -7,6 +7,7 @@ import datadog.trace.bootstrap.instrumentation.jms.MessageBatchState; import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; import de.thetaphi.forbiddenapis.SuppressForbidden; +import javax.annotation.ParametersAreNonnullByDefault; import javax.jms.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,6 +17,7 @@ public class MessageInjectAdapter implements AgentPropagation.Setter { public static final MessageInjectAdapter SETTER = new MessageInjectAdapter(); + @ParametersAreNonnullByDefault @SuppressForbidden @Override public void set(final Message carrier, final String key, final String value) { diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerInstrumentation.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerInstrumentation.java index db90d8cae1a3..978befe1e7ad 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerInstrumentation.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaProducerInstrumentation.java @@ -23,6 +23,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; @@ -148,7 +149,7 @@ public static AgentScope onEnter( sortedTags.put(TOPIC_TAG, record.topic()); sortedTags.put(TYPE_TAG, "kafka"); try { - propagate().inject(span, record.headers(), setter); + Propagators.defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { // inject the context in the headers, but delay sending the stats until we know the @@ -169,7 +170,7 @@ record = record.value(), record.headers()); - propagate().inject(span, record.headers(), setter); + Propagators.defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { propagate() diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/NoopTextMapInjectAdapter.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/NoopTextMapInjectAdapter.java index 2723ad8f2bd0..afd4e89a561e 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/NoopTextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/NoopTextMapInjectAdapter.java @@ -1,7 +1,9 @@ package datadog.trace.instrumentation.kafka_clients; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.kafka.common.header.Headers; +@ParametersAreNonnullByDefault public class NoopTextMapInjectAdapter implements TextMapInjectAdapterInterface { public static final NoopTextMapInjectAdapter NOOP_SETTER = new NoopTextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapter.java index dd5622ab47ab..d1ce9a000bf4 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapter.java @@ -4,8 +4,10 @@ import static java.nio.charset.StandardCharsets.UTF_8; import java.nio.ByteBuffer; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.kafka.common.header.Headers; +@ParametersAreNonnullByDefault public class TextMapInjectAdapter implements TextMapInjectAdapterInterface { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/ProducerAdvice.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/ProducerAdvice.java index 0d245d16bf4b..519d67cdbf0a 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/ProducerAdvice.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/ProducerAdvice.java @@ -14,6 +14,7 @@ import static datadog.trace.instrumentation.kafka_clients38.KafkaDecorator.TIME_IN_QUEUE_ENABLED; import static datadog.trace.instrumentation.kafka_common.StreamingContext.STREAMING_CONTEXT; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -72,7 +73,7 @@ public static AgentScope onEnter( sortedTags.put(TOPIC_TAG, record.topic()); sortedTags.put(TYPE_TAG, "kafka"); try { - propagate().inject(span, record.headers(), setter); + Propagators.defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { // inject the context in the headers, but delay sending the stats until we know the @@ -93,7 +94,7 @@ record = record.value(), record.headers()); - propagate().inject(span, record.headers(), setter); + Propagators.defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { propagate() diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientRequestTracingHandler.java index 9c6adf8aba65..299a224fde02 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/HttpClientRequestTracingHandler.java @@ -9,6 +9,7 @@ import static datadog.trace.instrumentation.netty38.client.NettyHttpClientDecorator.NETTY_CLIENT_REQUEST; import static datadog.trace.instrumentation.netty38.client.NettyResponseInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -65,7 +66,7 @@ public void writeRequested(final ChannelHandlerContext ctx, final MessageEvent m decorate.onPeerConnection(span, (InetSocketAddress) socketAddress); } - propagate().inject(span, request.headers(), SETTER); + Propagators.defaultPropagator().inject(span, request.headers(), SETTER); propagate() .injectPathwayContext( span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 7f4dc69580f9..11974e69656b 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,8 +1,10 @@ package datadog.trace.instrumentation.netty38.client; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.jboss.netty.handler.codec.http.HttpHeaders; +@ParametersAreNonnullByDefault public class NettyResponseInjectAdapter implements AgentPropagation.Setter { 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/HttpClientRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientRequestTracingHandler.java index c6ee72f517da..d1bef8ccb8c5 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/HttpClientRequestTracingHandler.java @@ -12,6 +12,7 @@ import static datadog.trace.instrumentation.netty40.client.NettyHttpClientDecorator.NETTY_CLIENT_REQUEST; import static datadog.trace.instrumentation.netty40.client.NettyResponseInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -88,7 +89,7 @@ public void write(final ChannelHandlerContext ctx, final Object msg, final Chann // AWS calls are often signed, so we can't add headers without breaking the signature. if (!awsClientCall) { - propagate().inject(span, request.headers(), SETTER); + Propagators.defaultPropagator().inject(span, request.headers(), SETTER); propagate() .injectPathwayContext( span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 c14f06880140..e279e489055b 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 @@ -2,7 +2,9 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import io.netty.handler.codec.http.HttpHeaders; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class NettyResponseInjectAdapter implements AgentPropagation.Setter { 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/HttpClientRequestTracingHandler.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientRequestTracingHandler.java index a21522f1a45b..5c16045865e8 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientRequestTracingHandler.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/HttpClientRequestTracingHandler.java @@ -12,6 +12,7 @@ import static datadog.trace.instrumentation.netty41.client.NettyHttpClientDecorator.NETTY_CLIENT_REQUEST; import static datadog.trace.instrumentation.netty41.client.NettyResponseInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -89,7 +90,7 @@ public void write(final ChannelHandlerContext ctx, final Object msg, final Chann // AWS calls are often signed, so we can't add headers without breaking the signature. if (!awsClientCall) { - propagate().inject(span, request.headers(), SETTER); + Propagators.defaultPropagator().inject(span, request.headers(), SETTER); propagate() .injectPathwayContext( span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 a8e3ba929dea..37c0b3b90b2e 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 @@ -2,7 +2,9 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import io.netty.handler.codec.http.HttpHeaders; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class NettyResponseInjectAdapter implements AgentPropagation.Setter { 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 61ffcd1c7cef..f563715ca4b8 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 @@ -2,7 +2,9 @@ import com.squareup.okhttp.Request; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); diff --git a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/TracingInterceptor.java b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/TracingInterceptor.java index dcea94a5cd76..51861a656d5a 100644 --- a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/TracingInterceptor.java +++ b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/TracingInterceptor.java @@ -10,6 +10,7 @@ import com.squareup.okhttp.Interceptor; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -26,7 +27,7 @@ public Response intercept(final Chain chain) throws IOException { DECORATE.onRequest(span, chain.request()); final Request.Builder requestBuilder = chain.request().newBuilder(); - propagate().inject(span, requestBuilder, SETTER); + Propagators.defaultPropagator().inject(span, requestBuilder, SETTER); propagate() .injectPathwayContext( span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 4ec53d7d0b10..8677f8a3e230 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,7 @@ package datadog.trace.instrumentation.okhttp3; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import okhttp3.Request; /** @@ -8,6 +9,7 @@ * * @author Pavol Loffay */ +@ParametersAreNonnullByDefault public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); diff --git a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/TracingInterceptor.java b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/TracingInterceptor.java index b2862aa9f734..e0f58cc1229f 100644 --- a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/TracingInterceptor.java +++ b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/TracingInterceptor.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.okhttp3.OkHttpClientDecorator.OKHTTP_REQUEST; import static datadog.trace.instrumentation.okhttp3.RequestBuilderInjectAdapter.SETTER; +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -29,7 +30,7 @@ public Response intercept(final Chain chain) throws IOException { DECORATE.onRequest(span, chain.request()); final Request.Builder requestBuilder = chain.request().newBuilder(); - propagate().inject(span, requestBuilder, SETTER); + Propagators.defaultPropagator().inject(span, requestBuilder, SETTER); propagate() .injectPathwayContext( span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 982597338092..d9c533ff690a 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,8 @@ package datadog.trace.instrumentation.opentelemetry; +import datadog.context.propagation.Propagators; 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.AgentTracer; import io.grpc.Context; @@ -39,7 +41,10 @@ public void inject(final Context context, final C carrier, final Setter s if (span == null || !span.getContext().isValid()) { return; } - tracer.propagate().inject(converter.toAgentSpan(span), carrier, new OtelSetter<>(setter)); + AgentSpan agentSpan = converter.toAgentSpan(span); + if (agentSpan != null) { + Propagators.defaultPropagator().inject(agentSpan, carrier, setter::set); + } } @Override @@ -51,19 +56,6 @@ public Context extract(final Context context, final C carrier, final Getter< } } - private static class OtelSetter implements AgentPropagation.Setter { - private final HttpTextFormat.Setter setter; - - private OtelSetter(final HttpTextFormat.Setter setter) { - this.setter = setter; - } - - @Override - public void set(final C carrier, final String key, final String value) { - setter.set(carrier, key, value); - } - } - private static class OtelGetter implements AgentPropagation.ContextVisitor { private static final String DD_TRACE_ID_KEY = "x-datadog-trace-id"; private static final String DD_SPAN_ID_KEY = "x-datadog-parent-id"; 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 deleted file mode 100644 index 503472d56da9..000000000000 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java +++ /dev/null @@ -1,13 +0,0 @@ -package datadog.trace.instrumentation.opentracing31; - -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import io.opentracing.propagation.TextMap; - -class OTTextMapSetter implements AgentPropagation.Setter { - static final OTTextMapSetter INSTANCE = new OTTextMapSetter(); - - @Override - public void set(final TextMap carrier, final String key, final String value) { - carrier.put(key, value); - } -} 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 c49815fadb49..cfc4b016744b 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,5 +1,8 @@ package datadog.trace.instrumentation.opentracing31; +import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; + +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -49,8 +52,8 @@ public SpanBuilder buildSpan(final String operationName) { public void inject(final SpanContext spanContext, final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext context = converter.toContext(spanContext); - - tracer.propagate().inject(context, (TextMap) carrier, OTTextMapSetter.INSTANCE); + AgentSpan span = fromSpanContext(context); + Propagators.defaultPropagator().inject(span, (TextMap) carrier, TextMap::put); } else { log.debug("Unsupported format for propagation - {}", format.getClass().getName()); } 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 deleted file mode 100644 index 389c6e1b2e4d..000000000000 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java +++ /dev/null @@ -1,13 +0,0 @@ -package datadog.trace.instrumentation.opentracing32; - -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import io.opentracing.propagation.TextMapInject; - -class OTTextMapInjectSetter implements AgentPropagation.Setter { - static final OTTextMapInjectSetter INSTANCE = new OTTextMapInjectSetter(); - - @Override - public void set(final TextMapInject carrier, final String key, final String value) { - carrier.put(key, value); - } -} 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 5f642be86fd7..3b5eeff9c3bd 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,5 +1,8 @@ package datadog.trace.instrumentation.opentracing32; +import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; + +import datadog.context.propagation.Propagators; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -61,8 +64,8 @@ public SpanBuilder buildSpan(final String operationName) { public void inject(final SpanContext spanContext, final Format format, final C carrier) { if (carrier instanceof TextMapInject) { final AgentSpanContext context = converter.toContext(spanContext); - - tracer.propagate().inject(context, (TextMapInject) carrier, OTTextMapInjectSetter.INSTANCE); + AgentSpan span = fromSpanContext(context); + Propagators.defaultPropagator().inject(span, (TextMapInject) carrier, TextMapInject::put); } else { log.debug("Unsupported format for propagation - {}", format.getClass().getName()); } 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 24b3c55fdedf..c274a55ab9b9 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 @@ -35,7 +35,7 @@ public Void apply(final Try result) { public static class PekkoHttpHeaders implements AgentPropagation.Setter { private HttpRequest request; // Did this request have a span when the PekkoHttpHeaders object was created? - private boolean hadSpan; + private final boolean hadSpan; public PekkoHttpHeaders(final HttpRequest request) { hadSpan = request != null && request.getHeader(HasSpanHeader.class).isPresent(); @@ -51,6 +51,7 @@ public boolean hadSpan() { return hadSpan; } + @ParametersAreNonnullByDefault @Override public void set(final HttpRequest carrier, final String key, final String value) { // Coerce a Scala trait Self type into the correct type diff --git a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpSingleRequestInstrumentation.java b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpSingleRequestInstrumentation.java index 2dc9e4c9bd67..1c28aff0f27c 100644 --- a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpSingleRequestInstrumentation.java +++ b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpSingleRequestInstrumentation.java @@ -11,6 +11,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -79,7 +80,7 @@ public static AgentScope methodEnter( DECORATE.onRequest(span, request); if (request != null) { - propagate().inject(span, request, headers); + Propagators.defaultPropagator().inject(span, request, headers); propagate() .injectPathwayContext( span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java index 4f7401034b89..d7f13c2d85ef 100644 --- a/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-1/src/main/java/datadog/trace/instrumentation/playws1/PlayWSClientInstrumentation.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -29,7 +30,7 @@ public static AgentSpan methodEnter( DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java index 796e1f049dd2..12f157721860 100644 --- a/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-2.1/src/main/java/datadog/trace/instrumentation/playws21/PlayWSClientInstrumentation.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -29,7 +30,7 @@ public static AgentSpan methodEnter( DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java b/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java index e795667d7f33..e9b14ff4a6d6 100644 --- a/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java +++ b/dd-java-agent/instrumentation/play-ws-2/src/main/java/datadog/trace/instrumentation/playws2/PlayWSClientInstrumentation.java @@ -7,6 +7,7 @@ import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; @@ -29,7 +30,7 @@ public static AgentSpan methodEnter( DECORATE.afterStart(span); DECORATE.onRequest(span, request); - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); 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 92f6a7f232b9..2034b3206411 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,8 +1,10 @@ package datadog.trace.instrumentation.playws; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import play.shaded.ahc.org.asynchttpclient.Request; +@ParametersAreNonnullByDefault public class HeadersInjectAdapter implements AgentPropagation.Setter { 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/RabbitChannelInstrumentation.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java index c25d332a150a..f3834db99e8a 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitChannelInstrumentation.java @@ -37,6 +37,7 @@ import com.rabbitmq.client.Consumer; import com.rabbitmq.client.GetResponse; import com.rabbitmq.client.MessageProperties; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; @@ -189,7 +190,7 @@ public static AgentScope setResourceNameAddHeaders( if (TIME_IN_QUEUE_ENABLED) { RabbitDecorator.injectTimeInQueueStart(headers); } - propagate().inject(span, headers, SETTER); + Propagators.defaultPropagator().inject(span, headers, SETTER); LinkedHashMap sortedTags = new LinkedHashMap<>(); sortedTags.put(DIRECTION_TAG, DIRECTION_OUT); sortedTags.put(EXCHANGE_TAG, exchange); 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 2f6c29f403d6..415b536aff6a 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 @@ -3,6 +3,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import java.util.Map; +@ParametersAreNonnullByDefault public class TextMapInjectAdapter implements AgentPropagation.Setter> { 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 dbe2e0bf79fc..e16c7b0fa89a 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,9 +1,11 @@ package datadog.trace.instrumentation.servlet; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +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 static final ServletRequestSetter SETTER = new ServletRequestSetter(); diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java index 82f5f47c374e..f4f696865d74 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/dispatcher/RequestDispatcherInstrumentation.java @@ -22,6 +22,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.InstrumentationContext; @@ -121,7 +122,7 @@ public static AgentScope start( span.setSpanType(InternalSpanTypes.HTTP_SERVER); // In case we lose context, inject trace into to the request. - propagate().inject(span, request, SETTER); + Propagators.defaultPropagator().inject(span, request, SETTER); propagate() .injectPathwayContext( span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); diff --git a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/SynapseClientInstrumentation.java b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/SynapseClientInstrumentation.java index 14a6376b9744..f8a475acab0f 100644 --- a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/SynapseClientInstrumentation.java +++ b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/SynapseClientInstrumentation.java @@ -13,6 +13,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -86,7 +87,7 @@ public static AgentScope beginRequest( DECORATE.afterStart(span); // add trace id to client-side request before it gets submitted as an HttpRequest - propagate().inject(span, TargetContext.getRequest(connection), SETTER); + Propagators.defaultPropagator().inject(span, TargetContext.getRequest(connection), SETTER); // capture span to be finished by one of the various client response advices connection.getContext().setAttribute(SYNAPSE_SPAN_KEY, 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 ed33141b6373..f5345ad836d5 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,8 +1,10 @@ package datadog.trace.instrumentation.synapse3; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import javax.annotation.ParametersAreNonnullByDefault; import org.apache.synapse.transport.passthru.TargetRequest; +@ParametersAreNonnullByDefault public final class TargetRequestInjectAdapter implements AgentPropagation.Setter { public static final TargetRequestInjectAdapter SETTER = new TargetRequestInjectAdapter(); 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 7dc452bef89d..aaec17ca4003 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -1,5 +1,8 @@ package datadog.opentracing; +import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; + +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.GlobalTracer; @@ -475,8 +478,8 @@ public DDSpanBuilder buildSpan(final String operationName) { public void inject(final SpanContext spanContext, final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext context = converter.toContext(spanContext); - - tracer.propagate().inject(context, (TextMap) carrier, TextMapSetter.INSTANCE); + AgentSpan span = fromSpanContext(context); + Propagators.defaultPropagator().inject(span, (TextMap) carrier, TextMap::put); } else { log.debug("Unsupported format for propagation - {}", format.getClass().getName()); }