From 3f7c076b9dc79b8d6ec5498f12c0c8023afc845b Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Thu, 30 Jan 2025 14:18:25 +0100 Subject: [PATCH] feat(dsm): Migrate DSM injection call to propagator API 1/3 --- .../AkkaHttpSingleRequestInstrumentation.java | 10 ++--- .../akkahttp106/SingleRequestAdvice.java | 10 ++--- .../DelegatingRequestProducer.java | 9 ++-- .../apachehttpclient/HelperMethods.java | 10 ++--- .../DelegatingRequestChannel.java | 9 ++-- .../apachehttpclient5/HelperMethods.java | 10 ++--- .../client/ClientCallImplInstrumentation.java | 6 +-- .../eventbridge/EventBridgeInterceptor.java | 11 ++--- .../aws/v1/sns/SnsInterceptor.java | 9 ++-- .../aws/v2/sns/SnsInterceptor.java | 8 ++-- .../aws/v1/sqs/SqsInterceptor.java | 28 ++++++++----- .../aws/v2/sqs/SqsInterceptor.java | 41 ++++++++++++------- .../CommonsHttpClientInstrumentation.java | 10 ++--- .../GoogleHttpClientDecorator.java | 7 ++-- .../PublisherInstrumentation.java | 6 +-- .../AsyncHttpClientInstrumentation.java | 8 ++-- .../client/ClientCallImplInstrumentation.java | 6 +-- .../HttpUrlConnectionInstrumentation.java | 10 ++--- .../httpclient/HeadersAdvice.java | 10 ++--- .../v1/JaxRsClientV1Instrumentation.java | 10 ++--- .../jaxrs/ClientTracingFilter.java | 16 +++----- .../jetty_client10/SendAdvice.java | 11 +++-- .../jetty_client12/SendAdvice.java | 12 +++--- .../JettyClientInstrumentation.java | 12 +++--- .../HttpClientRequestTracingHandler.java | 12 +++--- .../HttpClientRequestTracingHandler.java | 12 +++--- .../HttpClientRequestTracingHandler.java | 12 +++--- .../okhttp2/TracingInterceptor.java | 12 +++--- .../okhttp3/TracingInterceptor.java | 12 +++--- ...PekkoHttpSingleRequestInstrumentation.java | 12 +++--- .../playws1/PlayWSClientInstrumentation.java | 12 +++--- .../playws21/PlayWSClientInstrumentation.java | 12 +++--- .../playws2/PlayWSClientInstrumentation.java | 12 +++--- .../amqp/RabbitChannelInstrumentation.java | 8 ++-- .../RequestDispatcherInstrumentation.java | 12 +++--- 35 files changed, 192 insertions(+), 215 deletions(-) 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 301d05adb347..6f125cd2eedb 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 @@ -2,8 +2,8 @@ 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.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientDecorator.AKKA_CLIENT_REQUEST; import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientHelpers.AkkaHttpHeaders; @@ -17,9 +17,9 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import scala.concurrent.Future; @@ -79,10 +79,8 @@ public static AgentScope methodEnter( DECORATE.onRequest(span, request); if (request != null) { - Propagators.defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, headers); // Request is immutable, so we have to assign new value once we update headers request = headers.getRequest(); } 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 734ad74717c6..20585ca08c13 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 @@ -1,16 +1,16 @@ package datadog.trace.instrumentation.akkahttp106; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import scala.concurrent.Future; @@ -29,10 +29,8 @@ public static AgentScope methodEnter( AkkaHttpClientDecorator.DECORATE.onRequest(span, request); if (request != null) { - Propagators.defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, headers); // Request is immutable, so we have to assign new value once we update headers request = headers.getRequest(); } 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 2ff6fbc75e23..90d12ad81e89 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 @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.apachehttpasyncclient; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE; import static datadog.trace.instrumentation.apachehttpasyncclient.HttpHeadersInjectAdapter.SETTER; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; import org.apache.http.HttpException; import org.apache.http.HttpHost; @@ -35,9 +35,8 @@ public HttpRequest generateRequest() throws IOException, HttpException { final HttpRequest request = delegate.generateRequest(); DECORATE.onRequest(span, new HostAndRequestAsHttpUriRequest(delegate.getTarget(), request)); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); return request; } 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 6301d8e34931..00af3c377f39 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 @@ -1,17 +1,17 @@ package datadog.trace.instrumentation.apachehttpclient; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.apachehttpclient.ApacheHttpClientDecorator.DECORATE; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; @@ -46,10 +46,8 @@ private static AgentScope activateHttpSpan(final HttpUriRequest request) { // AWS calls are often signed, so we can't add headers without breaking the signature. if (!awsClientCall) { - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); } return scope; 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 eb3ebfb29224..d7345d2a1c97 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 @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.apachehttpclient5; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.apachehttpclient5.HttpHeadersInjectAdapter.SETTER; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; import org.apache.hc.core5.http.EntityDetails; import org.apache.hc.core5.http.HttpException; @@ -28,9 +28,8 @@ public void sendRequest(HttpRequest request, EntityDetails entityDetails, HttpCo throws HttpException, IOException { DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); 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 144046a5e99e..1c013921ffc2 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 @@ -1,17 +1,17 @@ package datadog.trace.instrumentation.apachehttpclient5; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.apachehttpclient5.ApacheHttpClientDecorator.DECORATE; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import org.apache.hc.client5.http.classic.HttpClient; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.HttpRequest; @@ -46,10 +46,8 @@ 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) { - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); } return scope; 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 b5271f0d2cb1..ff3c7226be0d 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 @@ -3,7 +3,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.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.DECORATE; @@ -21,6 +20,7 @@ import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.agent.tooling.muzzle.Reference; import datadog.trace.api.InstrumenterConfig; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -121,8 +121,8 @@ public static AgentScope before( if (null != responseListener && null != headers) { span = InstrumentationContext.get(ClientCall.class, AgentSpan.class).get(call); if (null != span) { - Propagators.defaultPropagator().inject(span, headers, SETTER); - propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), headers, SETTER); return activateSpan(span); } } 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 8d5939e51622..aa38900ee39c 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 @@ -1,6 +1,5 @@ package datadog.trace.instrumentation.aws.v2.eventbridge; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.core.datastreams.TagsProcessor.BUS_TAG; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; @@ -9,6 +8,7 @@ import static datadog.trace.instrumentation.aws.v2.eventbridge.TextMapInjectAdapter.SETTER; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.PathwayContext; @@ -86,12 +86,13 @@ private String getTraceContextToInject( StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.append('{'); - // Inject trace context - Propagators.defaultPropagator().inject(span, jsonBuilder, SETTER); - + // Inject context + datadog.context.Context context = span; if (traceConfig().isDataStreamsEnabled()) { - propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(eventBusName)); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(eventBusName)); + context = context.with(dsmContext); } + Propagators.defaultPropagator().inject(context, jsonBuilder, SETTER); // Add bus name and start time jsonBuilder 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 7567fbf679d2..146138b789f6 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 @@ -1,6 +1,5 @@ package datadog.trace.instrumentation.aws.v1.sns; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -14,7 +13,9 @@ import com.amazonaws.services.sns.model.PublishBatchRequest; import com.amazonaws.services.sns.model.PublishBatchRequestEntry; import com.amazonaws.services.sns.model.PublishRequest; +import datadog.context.Context; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -37,10 +38,12 @@ private ByteBuffer getMessageAttributeValueToInject( final AgentSpan span = newSpan(request); StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.append('{'); - Propagators.defaultPropagator().inject(span, jsonBuilder, SETTER); + Context context = span; if (traceConfig().isDataStreamsEnabled()) { - propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(snsTopicName)); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(snsTopicName)); + context = context.with(dsmContext); } + Propagators.defaultPropagator().inject(context, jsonBuilder, SETTER); jsonBuilder.setLength(jsonBuilder.length() - 1); // Remove the last comma jsonBuilder.append('}'); return ByteBuffer.wrap(jsonBuilder.toString().getBytes(StandardCharsets.UTF_8)); 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 ca6e320823be..d45ed7989227 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 @@ -1,6 +1,5 @@ package datadog.trace.instrumentation.aws.v2.sns; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -9,6 +8,7 @@ import static datadog.trace.instrumentation.aws.v2.sns.TextMapInjectAdapter.SETTER; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.nio.charset.StandardCharsets; @@ -38,10 +38,12 @@ private SdkBytes getMessageAttributeValueToInject( final AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE); StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.append('{'); - Propagators.defaultPropagator().inject(span, jsonBuilder, SETTER); + datadog.context.Context context = span; if (traceConfig().isDataStreamsEnabled()) { - propagate().injectPathwayContext(span, jsonBuilder, SETTER, getTags(snsTopicName)); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(snsTopicName)); + context = context.with(dsmContext); } + Propagators.defaultPropagator().inject(context, jsonBuilder, SETTER); jsonBuilder.setLength(jsonBuilder.length() - 1); // Remove the last comma jsonBuilder.append('}'); return SdkBytes.fromString(jsonBuilder.toString(), StandardCharsets.UTF_8); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsInterceptor.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsInterceptor.java index 1195eb058f09..084c8cae2f30 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsInterceptor.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/SqsInterceptor.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v1.sqs; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.DATADOG_KEY; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; @@ -16,6 +16,10 @@ import com.amazonaws.services.sqs.model.SendMessageBatchRequest; import com.amazonaws.services.sqs.model.SendMessageBatchRequestEntry; import com.amazonaws.services.sqs.model.SendMessageRequest; +import datadog.context.Context; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.util.LinkedHashMap; @@ -36,23 +40,21 @@ public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest request String queueUrl = smRequest.getQueueUrl(); if (queueUrl == null) return request; - LinkedHashMap sortedTags = getTags(queueUrl); - - final AgentSpan span = newSpan(request); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + Context context = newContext(request, queueUrl); // note: modifying message attributes has to be done before marshalling, otherwise the changes // are not reflected in the actual request (and the MD5 check on send will fail). - propagate().injectPathwayContext(span, smRequest.getMessageAttributes(), SETTER, sortedTags); + dsmPropagator.inject(context, smRequest.getMessageAttributes(), SETTER); } else if (request instanceof SendMessageBatchRequest) { SendMessageBatchRequest smbRequest = (SendMessageBatchRequest) request; String queueUrl = smbRequest.getQueueUrl(); if (queueUrl == null) return request; - LinkedHashMap sortedTags = getTags(queueUrl); - - final AgentSpan span = newSpan(request); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + Context context = newContext(request, queueUrl); for (SendMessageBatchRequestEntry entry : smbRequest.getEntries()) { - propagate().injectPathwayContext(span, entry.getMessageAttributes(), SETTER, sortedTags); + dsmPropagator.inject(context, entry.getMessageAttributes(), SETTER); } } else if (request instanceof ReceiveMessageRequest) { ReceiveMessageRequest rmRequest = (ReceiveMessageRequest) request; @@ -64,8 +66,14 @@ public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest request return request; } + private Context newContext(AmazonWebServiceRequest request, String queueUrl) { + AgentSpan span = newSpan(request); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(queueUrl)); + return span.with(dsmContext); + } + private AgentSpan newSpan(AmazonWebServiceRequest request) { - final AgentSpan span = startSpan("aws.sqs.send"); + final AgentSpan span = startSpan("sqs", "aws.sqs.send"); // pass the span to TracingRequestHandler in the sdk instrumentation where it'll be enriched & // activated contextStore.put(request, span); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsInterceptor.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsInterceptor.java index 2ac1479c904b..41d8146eb025 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsInterceptor.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/SqsInterceptor.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v2.sqs; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.DATADOG_KEY; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; @@ -9,6 +9,9 @@ import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG; import static datadog.trace.instrumentation.aws.v2.sqs.MessageAttributeInjector.SETTER; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.util.ArrayList; @@ -45,16 +48,13 @@ public SdkRequest modifyRequest( if (!optionalQueueUrl.isPresent()) { return request; } - String queueUrl = optionalQueueUrl.get(); - AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE); - LinkedHashMap sortedTags = new LinkedHashMap<>(); - sortedTags.put(DIRECTION_TAG, DIRECTION_OUT); - sortedTags.put(TOPIC_TAG, urlFileName(queueUrl)); - sortedTags.put(TYPE_TAG, "sqs"); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + datadog.context.Context ctx = getContext(executionAttributes, optionalQueueUrl.get()); Map messageAttributes = new HashMap<>(request.messageAttributes()); - propagate().injectPathwayContext(span, messageAttributes, SETTER, sortedTags); + dsmPropagator.inject(ctx, messageAttributes, SETTER); + return request.toBuilder().messageAttributes(messageAttributes).build(); } else if (context.request() instanceof SendMessageBatchRequest) { @@ -63,19 +63,15 @@ public SdkRequest modifyRequest( if (!optionalQueueUrl.isPresent()) { return request; } - String queueUrl = optionalQueueUrl.get(); - AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE); - LinkedHashMap sortedTags = new LinkedHashMap<>(); - sortedTags.put(DIRECTION_TAG, DIRECTION_OUT); - sortedTags.put(TOPIC_TAG, urlFileName(queueUrl)); - sortedTags.put(TYPE_TAG, "sqs"); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + datadog.context.Context ctx = getContext(executionAttributes, optionalQueueUrl.get()); List entries = new ArrayList<>(); for (SendMessageBatchRequestEntry entry : request.entries()) { Map messageAttributes = new HashMap<>(entry.messageAttributes()); - propagate().injectPathwayContext(span, messageAttributes, SETTER, sortedTags); + dsmPropagator.inject(ctx, messageAttributes, SETTER); entries.add(entry.toBuilder().messageAttributes(messageAttributes).build()); } @@ -95,4 +91,19 @@ public SdkRequest modifyRequest( return context.request(); } } + + private datadog.context.Context getContext( + ExecutionAttributes executionAttributes, String queueUrl) { + AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(getTags(queueUrl)); + return span.with(dsmContext); + } + + private LinkedHashMap getTags(String queueUrl) { + LinkedHashMap sortedTags = new LinkedHashMap<>(); + sortedTags.put(DIRECTION_TAG, DIRECTION_OUT); + sortedTags.put(TOPIC_TAG, urlFileName(queueUrl)); + sortedTags.put(TYPE_TAG, "sqs"); + return sortedTags; + } } 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 eb8ff4c8bf85..a6439374714f 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 @@ -2,8 +2,8 @@ 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.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.commonshttpclient.CommonsHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.commonshttpclient.CommonsHttpClientDecorator.HTTP_REQUEST; import static datadog.trace.instrumentation.commonshttpclient.HttpHeadersInjectAdapter.SETTER; @@ -16,10 +16,10 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; @@ -69,10 +69,8 @@ public static AgentScope methodEnter(@Advice.Argument(1) final HttpMethod httpMe DECORATE.afterStart(span); DECORATE.onRequest(span, httpMethod); - Propagators.defaultPropagator().inject(span, httpMethod, SETTER); - propagate() - .injectPathwayContext( - span, httpMethod, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), httpMethod, SETTER); return scope; } catch (BlockingException e) { 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 f6fd8dcc4751..766099e2b1cb 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 @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.googlehttpclient; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.instrumentation.googlehttpclient.HeadersInjectAdapter.SETTER; import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpResponse; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.URIUtils; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; @@ -38,9 +38,8 @@ protected URI url(final HttpRequest httpRequest) throws URISyntaxException { public AgentSpan prepareSpan(AgentSpan span, HttpRequest request) { DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); return span; } 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 6032187eef41..6097c6f556f3 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 @@ -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.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; @@ -23,6 +22,7 @@ import datadog.trace.agent.tooling.ExcludeFilterProvider; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter; @@ -81,8 +81,8 @@ public static AgentScope before( sortedTags.put(TYPE_TAG, "google-pubsub"); PubsubMessage.Builder builder = msg.toBuilder(); - Propagators.defaultPropagator().inject(span, builder, SETTER); - propagate().injectPathwayContext(span, builder, SETTER, sortedTags); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(sortedTags); + Propagators.defaultPropagator().inject(span.with(dsmContext), builder, SETTER); msg = builder.build(); return activateSpan(span); } 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 0e6c0cca486d..c12f7d333e0e 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 @@ -2,8 +2,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.grizzly.client.ClientDecorator.DECORATE; import static datadog.trace.instrumentation.grizzly.client.ClientDecorator.HTTP_REQUEST; import static datadog.trace.instrumentation.grizzly.client.InjectAdapter.SETTER; @@ -17,8 +17,8 @@ import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.InstrumenterConfig; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.util.Collections; import net.bytebuddy.asm.Advice; @@ -69,10 +69,8 @@ public static void onEnter( AgentSpan span = startSpan(HTTP_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); handler = new AsyncHandlerAdapter<>(span, parentSpan, handler); } } 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 4cd47a3d67ec..132e8f6ff3a7 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 @@ -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.instrumentation.grpc.client.GrpcClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.grpc.client.GrpcClientDecorator.DECORATE; import static datadog.trace.instrumentation.grpc.client.GrpcInjectAdapter.SETTER; @@ -14,6 +13,7 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -93,8 +93,8 @@ public static AgentScope before( @Advice.Local("$$ddSpan") AgentSpan span) { span = InstrumentationContext.get(ClientCall.class, AgentSpan.class).get(call); if (null != span) { - Propagators.defaultPropagator().inject(span, headers, SETTER); - propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), headers, SETTER); return activateSpan(span); } return null; 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 63ecc6545116..ad35200cd7b1 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 @@ -2,7 +2,7 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.bootstrap.instrumentation.httpurlconnection.HeadersInjectAdapter.SETTER; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -14,11 +14,11 @@ import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.InstrumenterConfig; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.bootstrap.instrumentation.httpurlconnection.HttpUrlState; import java.net.HttpURLConnection; import java.util.Map; @@ -86,10 +86,8 @@ public static HttpUrlState methodEnter( if (!state.hasSpan() && !state.isFinished()) { final AgentSpan span = state.start(thiz); if (!connected) { - Propagators.defaultPropagator().inject(span, thiz, SETTER); - propagate() - .injectPathwayContext( - span, thiz, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), thiz, SETTER); } } return state; 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 8d875b835506..42916d5a5a92 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 @@ -1,13 +1,13 @@ package datadog.trace.instrumentation.httpclient; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.KEEP; import static datadog.trace.instrumentation.httpclient.HttpHeadersInjectAdapter.SETTER; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.net.http.HttpHeaders; import java.util.HashMap; import java.util.List; @@ -19,10 +19,8 @@ public class HeadersAdvice { public static void methodExit(@Advice.Return(readOnly = false) HttpHeaders headers) { final Map> headerMap = new HashMap<>(headers.map()); final AgentSpan span = activeSpan(); - Propagators.defaultPropagator().inject(span, headerMap, SETTER); - propagate() - .injectPathwayContext( - span, headerMap, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), headerMap, SETTER); headers = HttpHeaders.of(headerMap, KEEP); } } 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 095f7e824e69..b5c130a3fcf3 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 @@ -4,8 +4,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; import static datadog.trace.instrumentation.jaxrs.v1.InjectAdapter.SETTER; import static datadog.trace.instrumentation.jaxrs.v1.JaxRsClientV1Decorator.DECORATE; @@ -20,9 +20,9 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -76,10 +76,8 @@ public static AgentScope onEnter( DECORATE.onRequest(span, request); request.getProperties().put(DD_SPAN_ATTRIBUTE, span); - Propagators.defaultPropagator().inject(span, request.getHeaders(), SETTER); - propagate() - .injectPathwayContext( - span, request.getHeaders(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request.getHeaders(), SETTER); return activateSpan(span); } return null; 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 44f4122163de..d5dd045c7b97 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 @@ -1,16 +1,16 @@ package datadog.trace.instrumentation.jaxrs; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.jaxrs.InjectAdapter.SETTER; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import javax.annotation.Priority; import javax.ws.rs.Priorities; import javax.ws.rs.client.ClientRequestContext; @@ -24,18 +24,14 @@ public class ClientTracingFilter implements ClientRequestFilter, ClientResponseF @Override public void filter(final ClientRequestContext requestContext) { - final AgentSpan span = startSpan(JAX_RS_CLIENT_CALL); + final AgentSpan span = startSpan("jax-rs", JAX_RS_CLIENT_CALL); try (final AgentScope scope = activateSpan(span)) { DECORATE.afterStart(span); DECORATE.onRequest(span, requestContext); - Propagators.defaultPropagator().inject(span, requestContext.getHeaders(), SETTER); - propagate() - .injectPathwayContext( - span, - requestContext.getHeaders(), - SETTER, - HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator() + .inject(span.with(dsmContext), requestContext.getHeaders(), SETTER); requestContext.setProperty(SPAN_PROPERTY_NAME, span); } 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 135e552c28e0..bdd023b328ef 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 @@ -1,15 +1,15 @@ package datadog.trace.instrumentation.jetty_client10; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.jetty_client.HeadersInjectAdapter.SETTER; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.util.List; import net.bytebuddy.asm.Advice; import org.eclipse.jetty.client.api.Request; @@ -20,15 +20,14 @@ public class SendAdvice { public static AgentSpan methodEnter( @Advice.Argument(0) Request request, @Advice.Argument(1) List responseListeners) { - AgentSpan span = startSpan(HTTP_REQUEST); + AgentSpan span = startSpan("jetty-client", HTTP_REQUEST); InstrumentationContext.get(Request.class, AgentSpan.class).put(request, span); // make sure the span is finished before onComplete callbacks execute responseListeners.add(0, new SpanFinishingCompleteListener(span)); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); 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 c4cd5a7f8932..1c93dbdb99df 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 @@ -1,15 +1,16 @@ package datadog.trace.instrumentation.jetty_client12; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.jetty_client12.HeadersInjectAdapter.SETTER; +import static datadog.trace.instrumentation.jetty_client12.JettyClientDecorator.HTTP_REQUEST; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import org.eclipse.jetty.client.Request; import org.eclipse.jetty.client.transport.HttpRequest; @@ -17,13 +18,12 @@ public class SendAdvice { @Advice.OnMethodEnter(suppress = Throwable.class) public static AgentScope methodEnter(@Advice.This final HttpRequest request) { - AgentSpan span = startSpan(JettyClientDecorator.HTTP_REQUEST); + AgentSpan span = startSpan("jetty-client", HTTP_REQUEST); InstrumentationContext.get(Request.class, AgentSpan.class).put(request, span); JettyClientDecorator.DECORATE.afterStart(span); JettyClientDecorator.DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); 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 62957714eb36..bd23b44ce8b0 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 @@ -2,8 +2,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.instrumentation.jetty_client.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.jetty_client91.JettyClientDecorator.DECORATE; @@ -18,9 +18,9 @@ import datadog.trace.agent.tooling.ExcludeFilterProvider; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter; import java.util.Collection; import java.util.List; @@ -86,16 +86,14 @@ public static class SendAdvice { public static AgentSpan methodEnter( @Advice.Argument(0) Request request, @Advice.Argument(1) List responseListeners) { - AgentSpan span = startSpan(HTTP_REQUEST); + AgentSpan span = startSpan("jetty-client", HTTP_REQUEST); InstrumentationContext.get(Request.class, AgentSpan.class).put(request, span); // make sure the span is finished before onComplete callbacks execute responseListeners.add(0, new SpanFinishingCompleteListener(span)); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); return span; } 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 299a224fde02..1412b4a92bed 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 @@ -2,18 +2,18 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.netty38.client.NettyHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.netty38.client.NettyHttpClientDecorator.DECORATE_SECURE; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.instrumentation.netty38.ChannelTraceContext; import java.net.InetSocketAddress; import java.net.SocketAddress; @@ -56,7 +56,7 @@ public void writeRequested(final ChannelHandlerContext ctx, final MessageEvent m boolean isSecure = ctx.getPipeline().get("sslHandler") != null; NettyHttpClientDecorator decorate = isSecure ? DECORATE_SECURE : DECORATE; - final AgentSpan span = startSpan(NETTY_CLIENT_REQUEST); + final AgentSpan span = startSpan("netty", NETTY_CLIENT_REQUEST); try (final AgentScope scope = activateSpan(span)) { decorate.afterStart(span); decorate.onRequest(span, request); @@ -66,10 +66,8 @@ public void writeRequested(final ChannelHandlerContext ctx, final MessageEvent m decorate.onPeerConnection(span, (InetSocketAddress) socketAddress); } - Propagators.defaultPropagator().inject(span, request.headers(), SETTER); - propagate() - .injectPathwayContext( - span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request.headers(), SETTER); channelTraceContext.setClientSpan(span); 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 d1bef8ccb8c5..b93ac2779183 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 @@ -2,8 +2,8 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.netty40.AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY; import static datadog.trace.instrumentation.netty40.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY; import static datadog.trace.instrumentation.netty40.AttributeKeys.SPAN_ATTRIBUTE_KEY; @@ -14,9 +14,9 @@ import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; @@ -77,7 +77,7 @@ public void write(final ChannelHandlerContext ctx, final Object msg, final Chann boolean isSecure = SSL_HANDLER != null && ctx.pipeline().get(SSL_HANDLER) != null; NettyHttpClientDecorator decorate = isSecure ? DECORATE_SECURE : DECORATE; - final AgentSpan span = startSpan(NETTY_CLIENT_REQUEST); + final AgentSpan span = startSpan("netty", NETTY_CLIENT_REQUEST); try (final AgentScope scope = activateSpan(span)) { decorate.afterStart(span); decorate.onRequest(span, request); @@ -89,10 +89,8 @@ 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) { - Propagators.defaultPropagator().inject(span, request.headers(), SETTER); - propagate() - .injectPathwayContext( - span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request.headers(), SETTER); } ctx.channel().attr(SPAN_ATTRIBUTE_KEY).set(span); 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 5c16045865e8..dbf749e5b1ec 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 @@ -2,8 +2,8 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.netty41.AttributeKeys.CLIENT_PARENT_ATTRIBUTE_KEY; import static datadog.trace.instrumentation.netty41.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY; import static datadog.trace.instrumentation.netty41.AttributeKeys.SPAN_ATTRIBUTE_KEY; @@ -14,9 +14,9 @@ import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelOutboundHandlerAdapter; @@ -78,7 +78,7 @@ public void write(final ChannelHandlerContext ctx, final Object msg, final Chann boolean isSecure = SSL_HANDLER != null && ctx.pipeline().get(SSL_HANDLER) != null; NettyHttpClientDecorator decorate = isSecure ? DECORATE_SECURE : DECORATE; - final AgentSpan span = startSpan(NETTY_CLIENT_REQUEST); + final AgentSpan span = startSpan("netty", NETTY_CLIENT_REQUEST); try (final AgentScope scope = activateSpan(span)) { decorate.afterStart(span); decorate.onRequest(span, request); @@ -90,10 +90,8 @@ 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) { - Propagators.defaultPropagator().inject(span, request.headers(), SETTER); - propagate() - .injectPathwayContext( - span, request.headers(), SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request.headers(), SETTER); } ctx.channel().attr(SPAN_ATTRIBUTE_KEY).set(span); 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 51861a656d5a..6be988396442 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 @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.okhttp2; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.okhttp2.OkHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.okhttp2.OkHttpClientDecorator.OKHTTP_REQUEST; import static datadog.trace.instrumentation.okhttp2.RequestBuilderInjectAdapter.SETTER; @@ -11,15 +11,15 @@ import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import datadog.context.propagation.Propagators; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; public class TracingInterceptor implements Interceptor { @Override public Response intercept(final Chain chain) throws IOException { - final AgentSpan span = startSpan(OKHTTP_REQUEST); + final AgentSpan span = startSpan("okhttp", OKHTTP_REQUEST); try (final AgentScope scope = activateSpan(span)) { DECORATE.afterStart(span); @@ -27,10 +27,8 @@ public Response intercept(final Chain chain) throws IOException { DECORATE.onRequest(span, chain.request()); final Request.Builder requestBuilder = chain.request().newBuilder(); - Propagators.defaultPropagator().inject(span, requestBuilder, SETTER); - propagate() - .injectPathwayContext( - span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), requestBuilder, SETTER); final Response response; try { 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 e0f58cc1229f..78cf704c2ff1 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 @@ -1,16 +1,16 @@ package datadog.trace.instrumentation.okhttp3; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.okhttp3.OkHttpClientDecorator.DECORATE; 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.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.io.IOException; import okhttp3.Interceptor; import okhttp3.Request; @@ -23,17 +23,15 @@ public Response intercept(final Chain chain) throws IOException { return chain.proceed(chain.request()); } - final AgentSpan span = startSpan(OKHTTP_REQUEST); + final AgentSpan span = startSpan("okhttp", OKHTTP_REQUEST); try (final AgentScope scope = activateSpan(span)) { DECORATE.afterStart(span); DECORATE.onRequest(span, chain.request()); final Request.Builder requestBuilder = chain.request().newBuilder(); - Propagators.defaultPropagator().inject(span, requestBuilder, SETTER); - propagate() - .injectPathwayContext( - span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), requestBuilder, SETTER); final Response response; try { 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 1c28aff0f27c..04cc2678b45d 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 @@ -2,8 +2,8 @@ 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.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.pekkohttp.PekkoHttpClientDecorator.DECORATE; import static datadog.trace.instrumentation.pekkohttp.PekkoHttpClientDecorator.PEKKO_CLIENT_REQUEST; import static datadog.trace.instrumentation.pekkohttp.PekkoHttpClientHelpers.OnCompleteHandler; @@ -14,9 +14,9 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import net.bytebuddy.asm.Advice; import org.apache.pekko.http.scaladsl.HttpExt; import org.apache.pekko.http.scaladsl.model.HttpRequest; @@ -75,15 +75,13 @@ public static AgentScope methodEnter( return null; } - final AgentSpan span = startSpan(PEKKO_CLIENT_REQUEST); + final AgentSpan span = startSpan("pekko-http", PEKKO_CLIENT_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); if (request != null) { - Propagators.defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, headers); // Request is immutable, so we have to assign new value once we update headers request = headers.getRequest(); } 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 d7f13c2d85ef..155da790f3ee 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 @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.playws1; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.playws.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.DECORATE; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; @@ -9,8 +9,8 @@ import com.google.auto.service.AutoService; import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.instrumentation.playws.BasePlayWSClientInstrumentation; import net.bytebuddy.asm.Advice; import play.shaded.ahc.org.asynchttpclient.AsyncHandler; @@ -26,14 +26,12 @@ public static AgentSpan methodEnter( @Advice.Argument(0) final Request request, @Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) { - final AgentSpan span = startSpan(PLAY_WS_REQUEST); + final AgentSpan span = startSpan("play-ws", PLAY_WS_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); if (asyncHandler instanceof StreamedAsyncHandler) { asyncHandler = new StreamedAsyncHandlerWrapper((StreamedAsyncHandler) asyncHandler, span); 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 12f157721860..832a2b7cb471 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 @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.playws21; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.playws.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.DECORATE; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; @@ -9,8 +9,8 @@ import com.google.auto.service.AutoService; import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.instrumentation.playws.BasePlayWSClientInstrumentation; import net.bytebuddy.asm.Advice; import play.shaded.ahc.org.asynchttpclient.AsyncHandler; @@ -26,14 +26,12 @@ public static AgentSpan methodEnter( @Advice.Argument(0) final Request request, @Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) { - final AgentSpan span = startSpan(PLAY_WS_REQUEST); + final AgentSpan span = startSpan("play-ws", PLAY_WS_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); if (asyncHandler instanceof StreamedAsyncHandler) { asyncHandler = new StreamedAsyncHandlerWrapper((StreamedAsyncHandler) asyncHandler, span); 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 e9b14ff4a6d6..3d755b2e9bbc 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 @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.playws2; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.instrumentation.playws.HeadersInjectAdapter.SETTER; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.DECORATE; import static datadog.trace.instrumentation.playws.PlayWSClientDecorator.PLAY_WS_REQUEST; @@ -9,8 +9,8 @@ import com.google.auto.service.AutoService; import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import datadog.trace.instrumentation.playws.BasePlayWSClientInstrumentation; import net.bytebuddy.asm.Advice; import play.shaded.ahc.org.asynchttpclient.AsyncHandler; @@ -26,14 +26,12 @@ public static AgentSpan methodEnter( @Advice.Argument(0) final Request request, @Advice.Argument(value = 1, readOnly = false) AsyncHandler asyncHandler) { - final AgentSpan span = startSpan(PLAY_WS_REQUEST); + final AgentSpan span = startSpan("play-ws", PLAY_WS_REQUEST); DECORATE.afterStart(span); DECORATE.onRequest(span, request); - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); if (asyncHandler instanceof StreamedAsyncHandler) { asyncHandler = new StreamedAsyncHandlerWrapper((StreamedAsyncHandler) asyncHandler, span); 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 f3834db99e8a..4cc295e1211f 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 @@ -7,7 +7,6 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -41,6 +40,7 @@ import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -190,14 +190,14 @@ public static AgentScope setResourceNameAddHeaders( if (TIME_IN_QUEUE_ENABLED) { RabbitDecorator.injectTimeInQueueStart(headers); } - Propagators.defaultPropagator().inject(span, headers, SETTER); LinkedHashMap sortedTags = new LinkedHashMap<>(); sortedTags.put(DIRECTION_TAG, DIRECTION_OUT); sortedTags.put(EXCHANGE_TAG, exchange); sortedTags.put( - HAS_ROUTING_KEY_TAG, routingKey == null || routingKey.equals("") ? "false" : "true"); + HAS_ROUTING_KEY_TAG, routingKey == null || routingKey.isEmpty() ? "false" : "true"); sortedTags.put(TYPE_TAG, "rabbitmq"); - propagate().injectPathwayContext(span, headers, SETTER, sortedTags); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(sortedTags); + Propagators.defaultPropagator().inject(span.with(dsmContext), headers, SETTER); props = new AMQP.BasicProperties( props.getContentType(), 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 f4f696865d74..2153e1d13bfa 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 @@ -5,10 +5,10 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.SERVLET_CONTEXT; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.SERVLET_PATH; +import static datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS; import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE; import static datadog.trace.instrumentation.servlet.ServletRequestSetter.SETTER; import static datadog.trace.instrumentation.servlet.SpanNameCache.SERVLET_PREFIX; @@ -25,12 +25,12 @@ import datadog.context.propagation.Propagators; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes; -import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletRequest; @@ -111,7 +111,7 @@ public static AgentScope start( } final AgentSpan span = - startSpan(SPAN_NAME_CACHE.computeIfAbsent(method, SERVLET_PREFIX), parent); + startSpan("servlet", SPAN_NAME_CACHE.computeIfAbsent(method, SERVLET_PREFIX), parent); DECORATE.afterStart(span); span.setTag(SERVLET_CONTEXT, request.getAttribute(DD_CONTEXT_PATH_ATTRIBUTE)); span.setTag(SERVLET_PATH, request.getAttribute(DD_SERVLET_PATH_ATTRIBUTE)); @@ -122,10 +122,8 @@ public static AgentScope start( span.setSpanType(InternalSpanTypes.HTTP_SERVER); // In case we lose context, inject trace into to the request. - Propagators.defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + Propagators.defaultPropagator().inject(span.with(dsmContext), request, SETTER); // temporarily replace from request to avoid spring resource name bubbling up: requestSpan = request.getAttribute(DD_SPAN_ATTRIBUTE);