From 61d862b37a07567f0c25a5ab580bd87be9775d61 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Thu, 30 Jan 2025 14:17:57 +0100 Subject: [PATCH 1/8] feat(dsm): Implement DSM context injection --- ...agator.java => DataStreamsPropagator.java} | 53 +++++++++++++-- .../DefaultDataStreamsMonitoring.java | 8 ++- .../api/datastreams/DataStreamsContext.java | 67 +++++++++++++++++++ .../datastreams/DataStreamsContextTest.groovy | 52 ++++++++++++++ 4 files changed, 174 insertions(+), 6 deletions(-) rename dd-trace-core/src/main/java/datadog/trace/core/datastreams/{DataStreamPropagator.java => DataStreamsPropagator.java} (59%) create mode 100644 internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java create mode 100644 internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java similarity index 59% rename from dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamPropagator.java rename to dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java index 7fdedfad381..dd8bbc7cfd9 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamPropagator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java @@ -1,32 +1,40 @@ package datadog.trace.core.datastreams; +import static datadog.trace.api.DDTags.PATHWAY_HASH; +import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.PROPAGATION_KEY_BASE64; + import datadog.context.Context; import datadog.context.propagation.CarrierSetter; import datadog.context.propagation.CarrierVisitor; import datadog.context.propagation.Propagator; import datadog.trace.api.TraceConfig; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.TagContext; +import java.io.IOException; import java.util.function.Supplier; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; // TODO Javadoc @ParametersAreNonnullByDefault -public class DataStreamPropagator implements Propagator { +public class DataStreamsPropagator implements Propagator { + private final DataStreamsMonitoring dataStreamsMonitoring; private final Supplier traceConfigSupplier; private final TimeSource timeSource; private final long hashOfKnownTags; private final String serviceNameOverride; - public DataStreamPropagator( + public DataStreamsPropagator( + DataStreamsMonitoring dataStreamsMonitoring, Supplier traceConfigSupplier, TimeSource timeSource, long hashOfKnownTags, String serviceNameOverride) { + this.dataStreamsMonitoring = dataStreamsMonitoring; this.traceConfigSupplier = traceConfigSupplier; this.timeSource = timeSource; this.hashOfKnownTags = hashOfKnownTags; @@ -35,12 +43,49 @@ public DataStreamPropagator( @Override public void inject(Context context, C carrier, CarrierSetter setter) { - // TODO Still in CorePropagation, not migrated yet + // TODO Pathway context needs to be stored into its own context element instead of span context + AgentSpan span = AgentSpan.fromContext(context); + DataStreamsContext dsmContext = DataStreamsContext.fromContext(context); + PathwayContext pathwayContext; + if (span == null + || dsmContext == null + || (pathwayContext = span.context().getPathwayContext()) == null + || (span.traceConfig() != null && !span.traceConfig().isDataStreamsEnabled())) { + return; + } + + // TODO Allow set checkpoint to use DsmContext as parameter? + pathwayContext.setCheckpoint( + dsmContext.sortedTags(), + dsmContext.sendCheckpoint() ? dataStreamsMonitoring::add : pathwayContext::saveStats, + dsmContext.defaultTimestamp(), + dsmContext.payloadSizeBytes()); + + boolean injected = injectPathwayContext(pathwayContext, carrier, setter); + + if (injected && pathwayContext.getHash() != 0) { + span.setTag(PATHWAY_HASH, Long.toUnsignedString(pathwayContext.getHash())); + } + } + + private boolean injectPathwayContext( + PathwayContext pathwayContext, C carrier, CarrierSetter setter) { + try { + String encodedContext = pathwayContext.encode(); + if (encodedContext != null) { + // LOGGER.debug("Injecting pathway context {}", pathwayContext); + setter.set(carrier, PROPAGATION_KEY_BASE64, encodedContext); + return true; + } + } catch (IOException e) { + // LOGGER.debug("Unable to set encode pathway context", e); + } + return false; } @Override public Context extract(Context context, C carrier, CarrierVisitor visitor) { - // TODO Pathway context needs to be stored into its own context element + // TODO Pathway context needs to be stored into its own context element instead of span context // Get span context to store pathway context into TagContext spanContext = getSpanContextOrNull(context); PathwayContext pathwayContext; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java index 2c8a897e762..ef36c073600 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java @@ -203,8 +203,12 @@ public PathwayContext newPathwayContext() { @Override public Propagator propagator() { - return new DataStreamPropagator( - this.traceConfigSupplier, this.timeSource, this.hashOfKnownTags, getThreadServiceName()); + return new DataStreamsPropagator( + this, + this.traceConfigSupplier, + this.timeSource, + this.hashOfKnownTags, + getThreadServiceName()); } @Override diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java new file mode 100644 index 00000000000..8cd0d6c33e0 --- /dev/null +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java @@ -0,0 +1,67 @@ +package datadog.trace.api.datastreams; + +import datadog.context.Context; +import datadog.context.ContextKey; +import datadog.context.ImplicitContextKeyed; +import java.util.LinkedHashMap; + +public class DataStreamsContext implements ImplicitContextKeyed { + private static final ContextKey CONTEXT_KEY = + ContextKey.named("dsm-context-key"); + + final LinkedHashMap sortedTags; + final long defaultTimestamp; + final long payloadSizeBytes; + final boolean sendCheckpoint; + + public static DataStreamsContext fromContext(Context context) { + return context.get(CONTEXT_KEY); + } + + public static DataStreamsContext fromTags(LinkedHashMap sortedTags) { + return new DataStreamsContext(sortedTags, 0, 0, true); + } + + public static DataStreamsContext fromKafka( + LinkedHashMap sortedTags, long defaultTimestamp, long payloadSizeBytes) { + return new DataStreamsContext(sortedTags, defaultTimestamp, payloadSizeBytes, true); + } + + public static DataStreamsContext fromTagsWithoutCheckpoint( + LinkedHashMap sortedTags) { + return new DataStreamsContext(sortedTags, 0, 0, false); + } + + // That's basically a record for now + private DataStreamsContext( + LinkedHashMap sortedTags, + long defaultTimestamp, + long payloadSizeBytes, + boolean sendCheckpoint) { + this.sortedTags = sortedTags; + this.defaultTimestamp = defaultTimestamp; + this.payloadSizeBytes = payloadSizeBytes; + this.sendCheckpoint = sendCheckpoint; + } + + public LinkedHashMap sortedTags() { + return this.sortedTags; + } + + public long defaultTimestamp() { + return this.defaultTimestamp; + } + + public long payloadSizeBytes() { + return this.payloadSizeBytes; + } + + public boolean sendCheckpoint() { + return this.sendCheckpoint; + } + + @Override + public Context storeInto(Context context) { + return context.with(CONTEXT_KEY, this); + } +} diff --git a/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy b/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy new file mode 100644 index 00000000000..8d3240ff8b4 --- /dev/null +++ b/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy @@ -0,0 +1,52 @@ +package datadog.trace.api.datastreams + +import datadog.context.Context +import spock.lang.Specification + +class DataStreamsContextTest extends Specification { + def 'test constructor'() { + setup: + def tags = new LinkedHashMap() + + when: + def dsmContext = DataStreamsContext.fromTags(tags) + + then: + dsmContext.sortedTags() == tags + dsmContext.defaultTimestamp() == 0 + dsmContext.payloadSizeBytes() == 0 + dsmContext.sendCheckpoint() + + when: + dsmContext = DataStreamsContext.fromTagsWithoutCheckpoint(tags) + + then: + dsmContext.sortedTags() == tags + dsmContext.defaultTimestamp() == 0 + dsmContext.payloadSizeBytes() == 0 + !dsmContext.sendCheckpoint() + + when: + def timestamp = 123L + def payloadSize = 456L + dsmContext = DataStreamsContext.fromKafka(tags, timestamp, payloadSize) + + then: + dsmContext.sortedTags() == tags + dsmContext.defaultTimestamp() == timestamp + dsmContext.payloadSizeBytes() == payloadSize + dsmContext.sendCheckpoint() + } + + def 'test context store'() { + setup: + def tags = new LinkedHashMap() + + when: + def dsmContext = DataStreamsContext.fromTags(tags) + def context = dsmContext.storeInto(Context.root()) + + then: + DataStreamsContext.fromContext(context) == dsmContext + } +} From 19be22cbe36bd8b2b7f092f8f626f0b3809940d2 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Thu, 30 Jan 2025 14:18:25 +0100 Subject: [PATCH 2/8] 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 | 10 ++--- .../client/ClientCallImplInstrumentation.java | 6 +-- .../HttpUrlConnectionInstrumentation.java | 10 ++--- .../httpclient/HeadersAdvice.java | 10 ++--- .../v1/JaxRsClientV1Instrumentation.java | 10 ++--- .../jaxrs/ClientTracingFilter.java | 15 +++---- .../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(+), 216 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 36679f4b767..a18d138c35e 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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 com.google.auto.service.AutoService; 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) { - defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 15d27bd7fed..105ac824f93 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 @@ -2,15 +2,15 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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) { - defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 be5d0ab2956..99dfee7ba3c 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.context.propagation.Propagators.defaultPropagator; -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.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)); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 c87e544a2c9..e9f726f6fdd 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 @@ -2,16 +2,16 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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) { - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 8a2acce10d9..673656e75ea 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.context.propagation.Propagators.defaultPropagator; -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.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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 0fa694ffc76..01b8ea4814d 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 @@ -2,16 +2,16 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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) { - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 90addc59fea..d2af437afa2 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 @@ -4,7 +4,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) { - defaultPropagator().inject(span, headers, SETTER); - propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 ba00ad7a4f8..1d9450ad175 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,7 +1,6 @@ package datadog.trace.instrumentation.aws.v2.eventbridge; import static datadog.context.propagation.Propagators.defaultPropagator; -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.core.datastreams.TagsProcessor.TYPE_TAG; import static datadog.trace.instrumentation.aws.v2.eventbridge.TextMapInjectAdapter.SETTER; +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 - 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); } + 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 ecf76bec16e..3d1333a777f 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,7 +1,6 @@ package datadog.trace.instrumentation.aws.v1.sns; import static datadog.context.propagation.Propagators.defaultPropagator; -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; @@ -15,6 +14,8 @@ 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.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('{'); - 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); } + 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 1b44762a692..20143055b2a 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,7 +1,6 @@ package datadog.trace.instrumentation.aws.v2.sns; import static datadog.context.propagation.Propagators.defaultPropagator; -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.core.datastreams.TagsProcessor.TYPE_TAG; import static datadog.trace.instrumentation.aws.v2.sns.TextMapInjectAdapter.SETTER; +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('{'); - 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); } + 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 1195eb058f0..084c8cae2f3 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 2ac1479c904..41d8146eb02 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 da06efdd80d..be1caba302d 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.appsec.api.blocking.BlockingException; 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); - defaultPropagator().inject(span, httpMethod, SETTER); - propagate() - .injectPathwayContext( - span, httpMethod, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 f0c084ea137..931924a9637 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.context.propagation.Propagators.defaultPropagator; -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.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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 be2f188796b..87f8413d80b 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 @@ -3,7 +3,6 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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(); - defaultPropagator().inject(span, builder, SETTER); - propagate().injectPathwayContext(span, builder, SETTER, sortedTags); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(sortedTags); + 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 6900f77797c..e21ca17dc43 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + defaultPropagator().inject(span.with(dsmContext), request, SETTER); 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 decfe0f1f85..229064cd30b 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 @@ -3,7 +3,6 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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 com.google.auto.service.AutoService; 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) { - defaultPropagator().inject(span, headers, SETTER); - propagate().injectPathwayContext(span, headers, SETTER, CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 d54025f4537..9d5dd1fc9d4 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 @@ -3,7 +3,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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) { - defaultPropagator().inject(span, thiz, SETTER); - propagate() - .injectPathwayContext( - span, thiz, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 2bed5ea86dd..16e8630f7ec 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 @@ -2,12 +2,12 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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(); - defaultPropagator().inject(span, headerMap, SETTER); - propagate() - .injectPathwayContext( - span, headerMap, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 deeb2e18328..b01be762333 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 @@ -5,8 +5,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 com.sun.jersey.api.client.ClientResponse; 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); - 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); + 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 526671beedd..9e7963bf67d 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 @@ -2,15 +2,15 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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,13 @@ 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); - 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); + 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 47c9137b8fc..58c64511ee9 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.context.propagation.Propagators.defaultPropagator; -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.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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 8efd2e309d5..5575808b567 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 @@ -2,14 +2,15 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 94445e169b1..e6328faefcc 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 6fae33f91ef..db47fba6bbd 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 @@ -3,17 +3,17 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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); } - 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); + 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 a6649163db1..dfcbcb27ec4 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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 static datadog.trace.instrumentation.netty40.client.NettyResponseInjectAdapter.SETTER; 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) { - 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); + 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 b0212d60cee..3672e678054 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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 static datadog.trace.instrumentation.netty41.client.NettyResponseInjectAdapter.SETTER; 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) { - 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); + 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 bde08ea6005..c68cdf00fe4 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 @@ -2,8 +2,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.Interceptor; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; +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(); - defaultPropagator().inject(span, requestBuilder, SETTER); - propagate() - .injectPathwayContext( - span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 be9043bf38c..fa9b076cae8 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 @@ -2,15 +2,15 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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.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(); - defaultPropagator().inject(span, requestBuilder, SETTER); - propagate() - .injectPathwayContext( - span, requestBuilder, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 9bdb72960e8..7e22ecd660d 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 @@ -3,8 +3,8 @@ import static datadog.context.propagation.Propagators.defaultPropagator; 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 com.google.auto.service.AutoService; 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) { - defaultPropagator().inject(span, request, headers); - propagate() - .injectPathwayContext( - span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 c802ac71f70..556aa762cc6 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,16 +1,16 @@ package datadog.trace.instrumentation.playws1; import static datadog.context.propagation.Propagators.defaultPropagator; -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; import com.google.auto.service.AutoService; 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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 c174f730563..666b01c4bf4 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,16 +1,16 @@ package datadog.trace.instrumentation.playws21; import static datadog.context.propagation.Propagators.defaultPropagator; -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; import com.google.auto.service.AutoService; 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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 48a9c23fadf..668e7e1a47a 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,16 +1,16 @@ package datadog.trace.instrumentation.playws2; import static datadog.context.propagation.Propagators.defaultPropagator; -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; import com.google.auto.service.AutoService; 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); - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + 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 4ac4aeb1b57..1c762039653 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 @@ -8,7 +8,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); } - 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); + 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 0e05beb9743..159eb7bb0a0 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 @@ -6,10 +6,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 com.google.auto.service.AutoService; 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. - defaultPropagator().inject(span, request, SETTER); - propagate() - .injectPathwayContext( - span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS); + DataStreamsContext dsmContext = DataStreamsContext.fromTags(CLIENT_PATHWAY_EDGE_TAGS); + defaultPropagator().inject(span.with(dsmContext), request, SETTER); // temporarily replace from request to avoid spring resource name bubbling up: requestSpan = request.getAttribute(DD_SPAN_ATTRIBUTE); From b971a9db422d9c713a725ea68eca0247388ce6bb Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Mon, 3 Feb 2025 10:39:24 +0100 Subject: [PATCH 3/8] feat(dsm): Migrate DSM injection call to propagator API 2/3 --- .../kafka_clients/TracingIterator.java | 11 ++++++++--- .../kafka_clients38/TracingIterator.java | 11 ++++++++--- .../KafkaStreamTaskInstrumentation.java | 17 +++++++++++------ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java index 67c89158442..e7a35eccc9a 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java @@ -1,5 +1,7 @@ package datadog.trace.instrumentation.kafka_clients; +import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -19,7 +21,10 @@ import static datadog.trace.instrumentation.kafka_common.Utils.computePayloadSizeBytes; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -116,9 +121,9 @@ protected void startNewRecordSpan(ConsumerRecord val) { // since the data received from the source may leave the topology on // some other instance of the application, breaking the context propagation // for DSM users - propagate() - .injectPathwayContext( - span, val.headers(), SETTER, sortedTags, val.timestamp(), payloadSize); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromKafka(sortedTags, val.timestamp(), payloadSize); + dsmPropagator.inject(span.with(dsmContext), val.headers(), SETTER); } } } else { diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java index ea154f61d2b..942cac3e990 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java @@ -1,5 +1,7 @@ package datadog.trace.instrumentation.kafka_clients38; +import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -14,7 +16,10 @@ import static datadog.trace.instrumentation.kafka_clients38.TextMapInjectAdapter.SETTER; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -116,9 +121,9 @@ protected void startNewRecordSpan(ConsumerRecord val) { // since the data received from the source may leave the topology on // some other instance of the application, breaking the context propagation // for DSM users - propagate() - .injectPathwayContext( - span, val.headers(), SETTER, sortedTags, val.timestamp(), payloadSize); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromKafka(sortedTags, val.timestamp(), payloadSize); + dsmPropagator.inject(span.with(dsmContext), val.headers(), SETTER); } } } else { diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java index a1307051605..51c663e9b57 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java @@ -1,6 +1,8 @@ package datadog.trace.instrumentation.kafka_streams; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; 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; @@ -29,9 +31,12 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; 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.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -263,9 +268,9 @@ public static void start( .setCheckpoint(span, sortedTags, record.timestamp, payloadSize); } else { if (STREAMING_CONTEXT.isSourceTopic(record.topic())) { - propagate() - .injectPathwayContext( - span, record, SR_SETTER, sortedTags, record.timestamp, payloadSize); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromKafka(sortedTags, record.timestamp, payloadSize); + dsmPropagator.inject(span.with(dsmContext), record, SR_SETTER); } } } else { @@ -345,9 +350,9 @@ public static void start( .setCheckpoint(span, sortedTags, record.timestamp(), payloadSize); } else { if (STREAMING_CONTEXT.isSourceTopic(record.topic())) { - propagate() - .injectPathwayContext( - span, record, PR_SETTER, sortedTags, record.timestamp(), payloadSize); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromKafka(sortedTags, record.timestamp(), payloadSize); + dsmPropagator.inject(span.with(dsmContext), record, PR_SETTER); } } } else { From 418083b1fb365dfab3b8d0717477ef38614d9429 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Mon, 3 Feb 2025 10:42:00 +0100 Subject: [PATCH 4/8] feat(dsm): Migrate DSM injection call to propagator API 3/3 --- .../KafkaProducerInstrumentation.java | 16 +++++++++++----- .../kafka_clients38/ProducerAdvice.java | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) 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 691b47d4842..8bb69ce3a5b 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 @@ -3,9 +3,10 @@ import static datadog.context.propagation.Propagators.defaultPropagator; import static datadog.trace.agent.tooling.bytebuddy.matcher.ClassLoaderMatchers.hasClassNamed; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTagsWithoutCheckpoint; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; 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.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -24,9 +25,12 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import com.google.auto.service.AutoService; +import datadog.context.propagation.Propagator; +import datadog.context.propagation.Propagators; 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.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -155,8 +159,9 @@ public static AgentScope onEnter( // inject the context in the headers, but delay sending the stats until we know the // message size. // The stats are saved in the pathway context and sent in PayloadSizeAdvice. - propagate() - .injectPathwayContextWithoutSendingStats(span, record.headers(), setter, sortedTags); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromTagsWithoutCheckpoint(sortedTags); + dsmPropagator.inject(span.with(dsmContext), record.headers(), setter); AvroSchemaExtractor.tryExtractProducer(record, span); } } catch (final IllegalStateException e) { @@ -173,8 +178,9 @@ record = defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { - propagate() - .injectPathwayContextWithoutSendingStats(span, record.headers(), setter, sortedTags); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromTagsWithoutCheckpoint(sortedTags); + dsmPropagator.inject(span.with(dsmContext), record.headers(), setter); AvroSchemaExtractor.tryExtractProducer(record, span); } } 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 bb6dc038669..a2e0feff854 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 @@ -1,9 +1,10 @@ package datadog.trace.instrumentation.kafka_clients38; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTagsWithoutCheckpoint; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; 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.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -15,7 +16,10 @@ 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.Propagator; +import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +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; @@ -79,8 +83,9 @@ public static AgentScope onEnter( // inject the context in the headers, but delay sending the stats until we know the // message size. // The stats are saved in the pathway context and sent in PayloadSizeAdvice. - propagate() - .injectPathwayContextWithoutSendingStats(span, record.headers(), setter, sortedTags); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromTagsWithoutCheckpoint(sortedTags); + dsmPropagator.inject(span.with(dsmContext), record.headers(), setter); AvroSchemaExtractor.tryExtractProducer(record, span); } } catch (final IllegalStateException e) { @@ -97,8 +102,9 @@ record = defaultPropagator().inject(span, record.headers(), setter); if (STREAMING_CONTEXT.isDisabledForTopic(record.topic()) || STREAMING_CONTEXT.isSinkTopic(record.topic())) { - propagate() - .injectPathwayContextWithoutSendingStats(span, record.headers(), setter, sortedTags); + Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); + DataStreamsContext dsmContext = fromTagsWithoutCheckpoint(sortedTags); + dsmPropagator.inject(span.with(dsmContext), record.headers(), setter); AvroSchemaExtractor.tryExtractProducer(record, span); } } From b6d7fbc4b127d4bf0ab14975a98cf9010fec4100 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Mon, 3 Feb 2025 15:33:48 +0100 Subject: [PATCH 5/8] feat(dsm): Refactor DSM API into its own package --- .../shim/trace/OtelExtractedContext.java | 2 +- .../instrumentation/avro/SchemaExtractor.java | 2 +- .../eventbridge/EventBridgeInterceptor.java | 2 +- .../aws/v0/TracingRequestHandler.java | 4 +- .../aws/v2/AwsSdkClientDecorator.java | 4 +- .../aws/v1/sqs/MessageAttributeInjector.java | 2 +- .../aws/v1/sqs/SqsInterceptor.java | 2 +- .../aws/v2/sqs/MessageAttributeInjector.java | 2 +- .../aws/v2/sqs/SqsInterceptor.java | 2 +- .../kafka_clients/AvroSchemaExtractor.java | 2 +- .../KafkaProducerInstrumentation.java | 2 +- .../kafka_clients38/AvroSchemaExtractor.java | 2 +- .../kafka_clients38/PayloadSizeAdvice.java | 2 +- .../src/test/groovy/TypeConverterTest.groovy | 2 +- .../src/test/groovy/TypeConverterTest.groovy | 2 +- .../src/test/groovy/TypeConverterTest.groovy | 1 + .../protobuf_java/SchemaExtractor.java | 2 +- .../spark/DatabricksParentContext.java | 2 +- .../spark/OpenlineageParentContext.java | 2 +- .../trace/agent/test/AgentTestRunner.groovy | 2 +- .../writer/ddagent/TraceMapperBenchmark.java | 2 +- .../datadog/trace/core/PendingTraceWrite.java | 2 +- .../datadog/trace/core/TracerMapperMap.java | 2 +- .../java/datadog/trace/core/CoreTracer.java | 4 +- .../datadog/trace/core/DDSpanContext.java | 2 +- .../DataStreamContextInjector.java | 4 +- .../datastreams/DataStreamsMonitoring.java | 4 +- .../datastreams/DataStreamsPropagator.java | 4 +- .../DefaultDataStreamsMonitoring.java | 12 +- .../datastreams/DefaultPathwayContext.java | 4 +- .../trace/core/datastreams/StatsBucket.java | 4 +- .../writer/DDAgentWriterCombinedTest.groovy | 2 +- .../common/writer/DDAgentWriterTest.groovy | 2 +- .../writer/DDIntakeWriterCombinedTest.groovy | 4 +- .../common/writer/DDIntakeWriterTest.groovy | 4 +- .../writer/PayloadDispatcherImplTest.groovy | 2 +- .../trace/core/CoreSpanBuilderTest.groovy | 2 +- .../trace/core/DDSpanSerializationTest.groovy | 2 +- .../datadog/trace/core/DDSpanTest.groovy | 2 +- .../trace/core/PendingTraceBufferTest.groovy | 2 +- .../trace/core/PendingTraceTest.groovy | 4 +- .../datastreams/DataStreamsWritingTest.groovy | 2 +- .../DefaultDataStreamsMonitoringTest.groovy | 2 +- .../DefaultPathwayContextTest.groovy | 4 +- .../propagation/B3HttpInjectorTest.groovy | 2 +- .../DatadogHttpInjectorTest.groovy | 2 +- .../HaystackHttpInjectorTest.groovy | 2 +- .../core/propagation/HttpInjectorTest.groovy | 2 +- .../propagation/W3CHttpInjectorTest.groovy | 2 +- .../propagation/XRayHttpInjectorTest.groovy | 2 +- .../core/test/DDCoreSpecification.groovy | 4 +- .../groovy/DataStreamsIntegrationTest.groovy | 2 +- .../opentracing/TypeConverterTest.groovy | 1 + internal-api/build.gradle | 11 +- .../AgentDataStreamsMonitoring.java | 5 +- .../api => api/datastreams}/Backlog.java | 2 +- .../trace/api/datastreams/InboxItem.java | 3 + .../NoopDataStreamsMonitoring.java | 59 ++++++++++ .../api/datastreams/NoopPathwayContext.java | 48 ++++++++ .../datastreams}/PathwayContext.java | 2 +- .../api => api/datastreams}/StatsPoint.java | 2 +- .../instrumentation/api/AgentSpanContext.java | 1 + .../instrumentation/api/AgentTracer.java | 105 +----------------- .../instrumentation/api/InboxItem.java | 3 - .../instrumentation/api/NoopSpanContext.java | 4 +- .../instrumentation/api/TagContext.java | 1 + 66 files changed, 203 insertions(+), 183 deletions(-) rename internal-api/src/main/java/datadog/trace/{bootstrap/instrumentation/api => api/datastreams}/AgentDataStreamsMonitoring.java (90%) rename internal-api/src/main/java/datadog/trace/{bootstrap/instrumentation/api => api/datastreams}/Backlog.java (94%) create mode 100644 internal-api/src/main/java/datadog/trace/api/datastreams/InboxItem.java create mode 100644 internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java create mode 100644 internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java rename internal-api/src/main/java/datadog/trace/{bootstrap/instrumentation/api => api/datastreams}/PathwayContext.java (94%) rename internal-api/src/main/java/datadog/trace/{bootstrap/instrumentation/api => api/datastreams}/StatsPoint.java (97%) delete mode 100644 internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InboxItem.java diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelExtractedContext.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelExtractedContext.java index a00a0990751..7b3551919d8 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelExtractedContext.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelExtractedContext.java @@ -2,11 +2,11 @@ import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTraceCollector; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanContext; import io.opentelemetry.context.Context; diff --git a/dd-java-agent/instrumentation/avro/src/main/java/datadog/trace/instrumentation/avro/SchemaExtractor.java b/dd-java-agent/instrumentation/avro/src/main/java/datadog/trace/instrumentation/avro/SchemaExtractor.java index d206ae6c7ca..e88bd37cef7 100644 --- a/dd-java-agent/instrumentation/avro/src/main/java/datadog/trace/instrumentation/avro/SchemaExtractor.java +++ b/dd-java-agent/instrumentation/avro/src/main/java/datadog/trace/instrumentation/avro/SchemaExtractor.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.avro; import datadog.trace.api.DDTags; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.Schema; 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 1d9450ad175..a7ca3e02bb7 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 @@ -9,9 +9,9 @@ import static datadog.trace.instrumentation.aws.v2.eventbridge.TextMapInjectAdapter.SETTER; import datadog.trace.api.datastreams.DataStreamsContext; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.bootstrap.InstanceStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java index 023a1b53085..463263a9ce0 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java @@ -18,11 +18,11 @@ import com.amazonaws.handlers.RequestHandler2; import datadog.context.propagation.Propagators; import datadog.trace.api.Config; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.bootstrap.ContextStore; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java index ebd52e3e35f..d80bc2df4da 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java @@ -11,14 +11,14 @@ import datadog.trace.api.DDTags; import datadog.trace.api.cache.DDCache; import datadog.trace.api.cache.DDCaches; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.InstanceStore; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; import datadog.trace.bootstrap.instrumentation.api.Tags; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java index a8d052c2b10..a522c961c34 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v1.sqs; -import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.DATADOG_KEY; +import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; import com.amazonaws.services.sqs.model.MessageAttributeValue; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; 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 084c8cae2f3..4b2e431a6a6 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,8 +1,8 @@ package datadog.trace.instrumentation.aws.v1.sqs; +import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; 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; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java index 1d57ad263a9..d92de8bebf4 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.aws.v2.sqs; -import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.DATADOG_KEY; +import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import java.util.Map; 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 41d8146eb02..bc5729e49c1 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,7 +1,7 @@ package datadog.trace.instrumentation.aws.v2.sqs; +import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; 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; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/AvroSchemaExtractor.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/AvroSchemaExtractor.java index 8e74e1757d4..5190ffe8446 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/AvroSchemaExtractor.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/AvroSchemaExtractor.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.kafka_clients; import datadog.trace.api.DDTags; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.util.FNV64Hash; 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 8bb69ce3a5b..a85ee9ce95d 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 @@ -31,12 +31,12 @@ import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; import datadog.trace.api.datastreams.DataStreamsContext; +import datadog.trace.api.datastreams.StatsPoint; 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.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags; -import datadog.trace.bootstrap.instrumentation.api.StatsPoint; import java.util.LinkedHashMap; import java.util.Map; import net.bytebuddy.asm.Advice; diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/AvroSchemaExtractor.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/AvroSchemaExtractor.java index 6ca8bc81aa3..a0f6624a8f1 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/AvroSchemaExtractor.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/AvroSchemaExtractor.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.kafka_clients38; import datadog.trace.api.DDTags; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.util.FNV64Hash; diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/PayloadSizeAdvice.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/PayloadSizeAdvice.java index 6192485a47e..8d0a8b6a7b0 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/PayloadSizeAdvice.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/PayloadSizeAdvice.java @@ -2,8 +2,8 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; +import datadog.trace.api.datastreams.StatsPoint; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.StatsPoint; import net.bytebuddy.asm.Advice; public class PayloadSizeAdvice { diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy index b5c93348fac..657d79cb67d 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/TypeConverterTest.groovy @@ -2,7 +2,7 @@ import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.core.DDSpan import datadog.trace.core.DDSpanContext diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy index 694103be815..3728010d4ee 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/TypeConverterTest.groovy @@ -2,7 +2,7 @@ import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.core.DDSpan import datadog.trace.core.DDSpanContext diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy index 1e2f64b876c..99d5d5f5362 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy @@ -2,6 +2,7 @@ import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.core.DDSpan diff --git a/dd-java-agent/instrumentation/protobuf/src/main/java/datadog/trace/instrumentation/protobuf_java/SchemaExtractor.java b/dd-java-agent/instrumentation/protobuf/src/main/java/datadog/trace/instrumentation/protobuf_java/SchemaExtractor.java index 03593389199..6b193e1f204 100644 --- a/dd-java-agent/instrumentation/protobuf/src/main/java/datadog/trace/instrumentation/protobuf_java/SchemaExtractor.java +++ b/dd-java-agent/instrumentation/protobuf/src/main/java/datadog/trace/instrumentation/protobuf_java/SchemaExtractor.java @@ -4,7 +4,7 @@ import com.google.protobuf.Descriptors.Descriptor; import com.google.protobuf.Descriptors.FieldDescriptor; import datadog.trace.api.DDTags; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.Schema; diff --git a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/DatabricksParentContext.java b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/DatabricksParentContext.java index ce072749228..5b8d51a5dc8 100644 --- a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/DatabricksParentContext.java +++ b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/DatabricksParentContext.java @@ -2,10 +2,10 @@ import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTraceCollector; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; diff --git a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/OpenlineageParentContext.java b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/OpenlineageParentContext.java index e4c2688f064..23b543211f1 100644 --- a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/OpenlineageParentContext.java +++ b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/OpenlineageParentContext.java @@ -2,11 +2,11 @@ import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentTraceCollector; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy index 23cb2025f44..bb62b778b86 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/AgentTestRunner.groovy @@ -36,11 +36,11 @@ import datadog.trace.api.gateway.RequestContext import datadog.trace.api.internal.TraceSegment import datadog.trace.api.sampling.SamplingRule import datadog.trace.api.time.SystemTimeSource +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring import datadog.trace.bootstrap.ActiveSubsystems import datadog.trace.bootstrap.CallDepthThreadLocalMap import datadog.trace.bootstrap.InstrumentationErrors import datadog.trace.bootstrap.debugger.DebuggerContext -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI import datadog.trace.common.metrics.EventListener diff --git a/dd-trace-core/src/jmh/java/datadog/trace/common/writer/ddagent/TraceMapperBenchmark.java b/dd-trace-core/src/jmh/java/datadog/trace/common/writer/ddagent/TraceMapperBenchmark.java index da5db833481..54192804b05 100644 --- a/dd-trace-core/src/jmh/java/datadog/trace/common/writer/ddagent/TraceMapperBenchmark.java +++ b/dd-trace-core/src/jmh/java/datadog/trace/common/writer/ddagent/TraceMapperBenchmark.java @@ -12,8 +12,8 @@ import datadog.communication.serialization.msgpack.MsgPackWriter; import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.NoopPathwayContext; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.core.CoreTracer; import datadog.trace.core.DDSpan; diff --git a/dd-trace-core/src/jmh/java/datadog/trace/core/PendingTraceWrite.java b/dd-trace-core/src/jmh/java/datadog/trace/core/PendingTraceWrite.java index 677b941ab63..b0a90c7bffb 100644 --- a/dd-trace-core/src/jmh/java/datadog/trace/core/PendingTraceWrite.java +++ b/dd-trace-core/src/jmh/java/datadog/trace/core/PendingTraceWrite.java @@ -2,8 +2,8 @@ import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.NoopPathwayContext; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext; import java.util.Collections; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Level; diff --git a/dd-trace-core/src/jmh/java/datadog/trace/core/TracerMapperMap.java b/dd-trace-core/src/jmh/java/datadog/trace/core/TracerMapperMap.java index 50aa7409b82..73250424b2e 100644 --- a/dd-trace-core/src/jmh/java/datadog/trace/core/TracerMapperMap.java +++ b/dd-trace-core/src/jmh/java/datadog/trace/core/TracerMapperMap.java @@ -3,8 +3,8 @@ import datadog.communication.serialization.msgpack.MsgPackWriter; import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.NoopPathwayContext; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext; import datadog.trace.common.writer.LoggingWriter; import datadog.trace.common.writer.ddagent.TraceMapperV0_4; import datadog.trace.common.writer.ddagent.TraceMapperV0_5; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 09d578d06d0..c546c7172f1 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -34,6 +34,8 @@ import datadog.trace.api.StatsDClient; import datadog.trace.api.TraceConfig; import datadog.trace.api.config.GeneralConfig; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.experimental.DataStreamsCheckpointer; import datadog.trace.api.flare.TracerFlare; import datadog.trace.api.gateway.CallbackProvider; @@ -51,7 +53,6 @@ import datadog.trace.api.scopemanager.ScopeListener; import datadog.trace.api.time.SystemTimeSource; import datadog.trace.api.time.TimeSource; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentHistogram; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentScope; @@ -60,7 +61,6 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpanLink; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.BlackHoleSpan; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration; import datadog.trace.bootstrap.instrumentation.api.ScopeSource; import datadog.trace.bootstrap.instrumentation.api.ScopeState; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index fcbf046122a..52b1adf8907 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -10,6 +10,7 @@ import datadog.trace.api.cache.DDCache; import datadog.trace.api.cache.DDCaches; import datadog.trace.api.config.TracerConfig; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.gateway.BlockResponseFunction; import datadog.trace.api.gateway.RequestContext; import datadog.trace.api.gateway.RequestContextSlot; @@ -18,7 +19,6 @@ import datadog.trace.api.sampling.SamplingMechanism; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpanLink; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.ProfilerContext; import datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration; import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java index e7154f6d852..2994aa9518e 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java @@ -1,11 +1,11 @@ package datadog.trace.core.datastreams; import static datadog.trace.api.DDTags.PATHWAY_HASH; -import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.PROPAGATION_KEY_BASE64; +import static datadog.trace.api.datastreams.PathwayContext.PROPAGATION_KEY_BASE64; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import java.io.IOException; import java.util.LinkedHashMap; import org.slf4j.Logger; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java index 0571eff5f08..8f7082a4270 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java @@ -1,11 +1,11 @@ package datadog.trace.core.datastreams; import datadog.context.propagation.Propagator; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.experimental.DataStreamsContextCarrier; -import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.core.propagation.HttpCodec; public interface DataStreamsMonitoring extends AgentDataStreamsMonitoring, AutoCloseable { diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java index dd8bbc7cfd9..9769d55e573 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java @@ -1,7 +1,7 @@ package datadog.trace.core.datastreams; import static datadog.trace.api.DDTags.PATHWAY_HASH; -import static datadog.trace.bootstrap.instrumentation.api.PathwayContext.PROPAGATION_KEY_BASE64; +import static datadog.trace.api.datastreams.PathwayContext.PROPAGATION_KEY_BASE64; import datadog.context.Context; import datadog.context.propagation.CarrierSetter; @@ -9,10 +9,10 @@ import datadog.context.propagation.Propagator; import datadog.trace.api.TraceConfig; import datadog.trace.api.datastreams.DataStreamsContext; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.TagContext; import java.io.IOException; import java.util.function.Supplier; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java index ef36c073600..a537a9fb25c 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java @@ -18,16 +18,16 @@ import datadog.trace.api.Config; import datadog.trace.api.TraceConfig; import datadog.trace.api.WellKnownTags; +import datadog.trace.api.datastreams.Backlog; +import datadog.trace.api.datastreams.InboxItem; +import datadog.trace.api.datastreams.NoopPathwayContext; +import datadog.trace.api.datastreams.PathwayContext; +import datadog.trace.api.datastreams.StatsPoint; import datadog.trace.api.experimental.DataStreamsContextCarrier; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import datadog.trace.bootstrap.instrumentation.api.Backlog; -import datadog.trace.bootstrap.instrumentation.api.InboxItem; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; import datadog.trace.bootstrap.instrumentation.api.Schema; import datadog.trace.bootstrap.instrumentation.api.SchemaIterator; -import datadog.trace.bootstrap.instrumentation.api.StatsPoint; import datadog.trace.common.metrics.EventListener; import datadog.trace.common.metrics.OkHttpSink; import datadog.trace.common.metrics.Sink; @@ -197,7 +197,7 @@ public PathwayContext newPathwayContext() { if (configSupportsDataStreams) { return new DefaultPathwayContext(timeSource, hashOfKnownTags, getThreadServiceName()); } else { - return AgentTracer.NoopPathwayContext.INSTANCE; + return NoopPathwayContext.INSTANCE; } } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java index b95a65926dc..7db93af2518 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java @@ -10,9 +10,9 @@ import datadog.context.propagation.CarrierVisitor; import datadog.trace.api.Config; import datadog.trace.api.WellKnownTags; +import datadog.trace.api.datastreams.PathwayContext; +import datadog.trace.api.datastreams.StatsPoint; import datadog.trace.api.time.TimeSource; -import datadog.trace.bootstrap.instrumentation.api.PathwayContext; -import datadog.trace.bootstrap.instrumentation.api.StatsPoint; import datadog.trace.util.FNV64Hash; import java.io.IOException; import java.util.ArrayList; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/StatsBucket.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/StatsBucket.java index 79f73df8876..fab6d57a312 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/StatsBucket.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/StatsBucket.java @@ -1,7 +1,7 @@ package datadog.trace.core.datastreams; -import datadog.trace.bootstrap.instrumentation.api.Backlog; -import datadog.trace.bootstrap.instrumentation.api.StatsPoint; +import datadog.trace.api.datastreams.Backlog; +import datadog.trace.api.datastreams.StatsPoint; import java.util.Collection; import java.util.HashMap; import java.util.List; diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterCombinedTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterCombinedTest.groovy index f62c7f842bc..1b3a94b42a1 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterCombinedTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterCombinedTest.groovy @@ -4,7 +4,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ddagent.DDAgentApi import datadog.communication.ddagent.DDAgentFeaturesDiscovery import datadog.trace.common.writer.ddagent.TraceMapperV0_4 diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterTest.groovy index 71a7cb2cdc8..d67fd3dee5f 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDAgentWriterTest.groovy @@ -5,7 +5,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ddagent.DDAgentApi import datadog.trace.common.writer.ddagent.DDAgentMapperDiscovery import datadog.trace.core.CoreTracer diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterCombinedTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterCombinedTest.groovy index e47daa6919b..4d69de93014 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterCombinedTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterCombinedTest.groovy @@ -10,7 +10,7 @@ import datadog.trace.api.StatsDClient import datadog.trace.api.civisibility.CiVisibilityWellKnownTags import datadog.trace.api.intake.TrackType import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ddintake.DDIntakeApi import datadog.trace.common.writer.ddintake.DDIntakeMapperDiscovery import datadog.trace.core.CoreTracer @@ -736,7 +736,7 @@ class DDIntakeWriterCombinedTest extends DDCoreSpecification { trace, null, null, - AgentTracer.NoopPathwayContext.INSTANCE, + NoopPathwayContext.INSTANCE, false, PropagationTags.factory().empty()) } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterTest.groovy index d8584086dac..190100635c3 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/DDIntakeWriterTest.groovy @@ -6,7 +6,7 @@ import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient import datadog.trace.api.intake.TrackType import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ddagent.DDAgentApi import datadog.trace.common.writer.ddagent.DDAgentMapperDiscovery import datadog.trace.core.CoreTracer @@ -207,7 +207,7 @@ class DDIntakeWriterTest extends DDCoreSpecification { trace, null, null, - AgentTracer.NoopPathwayContext.INSTANCE, + NoopPathwayContext.INSTANCE, false, PropagationTags.factory().empty()) return new DDSpan("test", 0, context, null) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/PayloadDispatcherImplTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/PayloadDispatcherImplTest.groovy index 2cc1ca0cddf..afb0982b102 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/PayloadDispatcherImplTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/PayloadDispatcherImplTest.groovy @@ -5,7 +5,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ddagent.DDAgentApi import datadog.trace.common.writer.ddagent.DDAgentMapperDiscovery import datadog.trace.core.CoreTracer diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreSpanBuilderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreSpanBuilderTest.groovy index d4a8457f553..28ceda7c1c4 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreSpanBuilderTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreSpanBuilderTest.groovy @@ -12,7 +12,7 @@ import datadog.trace.api.gateway.RequestContextSlot import datadog.trace.api.naming.SpanNaming import datadog.trace.api.sampling.PrioritySampling import datadog.trace.bootstrap.instrumentation.api.AgentScope -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.TagContext import datadog.trace.common.writer.ListWriter import datadog.trace.core.propagation.PropagationTags diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanSerializationTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanSerializationTest.groovy index 97041d88650..555e8ebd747 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanSerializationTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanSerializationTest.groovy @@ -6,7 +6,7 @@ import datadog.communication.serialization.msgpack.MsgPackWriter import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ListWriter import datadog.trace.common.writer.ddagent.TraceMapperV0_4 import datadog.trace.common.writer.ddagent.TraceMapperV0_5 diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanTest.groovy index 8385a42d543..a66042c50d9 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanTest.groovy @@ -6,7 +6,7 @@ import datadog.trace.api.DDTraceId import datadog.trace.api.gateway.RequestContextSlot import datadog.trace.api.sampling.PrioritySampling import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities import datadog.trace.bootstrap.instrumentation.api.TagContext import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceBufferTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceBufferTest.groovy index b9fe39dba76..e564221aa08 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceBufferTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceBufferTest.groovy @@ -7,7 +7,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.flare.TracerFlare import datadog.trace.api.time.SystemTimeSource -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.context.TraceScope import datadog.trace.core.monitor.HealthMetrics diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceTest.groovy index 8ec381235bb..4dcb6eb7604 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/PendingTraceTest.groovy @@ -3,7 +3,7 @@ package datadog.trace.core import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling import datadog.trace.api.time.TimeSource -import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.core.monitor.HealthMetrics import datadog.trace.core.propagation.PropagationTags import spock.lang.Timeout @@ -41,7 +41,7 @@ class PendingTraceTest extends PendingTraceTestBase { trace, null, null, - AgentTracer.NoopPathwayContext.INSTANCE, + NoopPathwayContext.INSTANCE, false, PropagationTags.factory().empty()), null) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy index 6d163d0ac79..f3a435cec1e 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DataStreamsWritingTest.groovy @@ -7,7 +7,7 @@ import datadog.trace.api.Config import datadog.trace.api.TraceConfig import datadog.trace.api.WellKnownTags import datadog.trace.api.time.ControllableTimeSource -import datadog.trace.bootstrap.instrumentation.api.StatsPoint +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.core.DDTraceCoreInfo import datadog.trace.core.test.DDCoreSpecification import okhttp3.HttpUrl diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy index 36c4dc04287..dfdbb34f019 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy @@ -7,7 +7,7 @@ import datadog.trace.api.WellKnownTags import datadog.trace.api.experimental.DataStreamsContextCarrier import datadog.trace.api.time.ControllableTimeSource import datadog.trace.bootstrap.instrumentation.api.AgentPropagation -import datadog.trace.bootstrap.instrumentation.api.StatsPoint +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.common.metrics.EventListener import datadog.trace.common.metrics.Sink import datadog.trace.core.test.DDCoreSpecification diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy index 3d69d7b2800..c50a5145c62 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy @@ -7,8 +7,8 @@ import datadog.trace.api.TraceConfig import datadog.trace.api.WellKnownTags import datadog.trace.api.time.ControllableTimeSource import datadog.trace.bootstrap.instrumentation.api.AgentPropagation -import datadog.trace.bootstrap.instrumentation.api.PathwayContext -import datadog.trace.bootstrap.instrumentation.api.StatsPoint +import datadog.trace.api.datastreams.PathwayContext +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.bootstrap.instrumentation.api.TagContext import datadog.trace.common.metrics.Sink import datadog.trace.core.propagation.ExtractedContext diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/B3HttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/B3HttpInjectorTest.groovy index 33610e26ea1..71e67ce55dc 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/B3HttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/B3HttpInjectorTest.groovy @@ -4,7 +4,7 @@ import datadog.trace.api.Config import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.DynamicConfig -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.core.CoreTracer import datadog.trace.test.util.StringUtils diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/DatadogHttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/DatadogHttpInjectorTest.groovy index b7a6a604a76..a51a37fd929 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/DatadogHttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/DatadogHttpInjectorTest.groovy @@ -4,7 +4,7 @@ import datadog.trace.api.DD128bTraceId import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.internal.util.LongStringUtils -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ListWriter import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HaystackHttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HaystackHttpInjectorTest.groovy index c44c251e5ac..8c32e0a8c9b 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HaystackHttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HaystackHttpInjectorTest.groovy @@ -5,7 +5,7 @@ import datadog.trace.api.DDTraceId import static datadog.trace.api.sampling.PrioritySampling.* import static datadog.trace.api.sampling.SamplingMechanism.* -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ListWriter import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HttpInjectorTest.groovy index 4e11dc6aedb..4274be2af55 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HttpInjectorTest.groovy @@ -9,7 +9,7 @@ import datadog.trace.test.util.StringUtils import static datadog.trace.api.TracePropagationStyle.HAYSTACK import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT import static datadog.trace.api.sampling.PrioritySampling.* -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ListWriter import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/W3CHttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/W3CHttpInjectorTest.groovy index 7aacfaa1b50..726399972ca 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/W3CHttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/W3CHttpInjectorTest.groovy @@ -2,7 +2,7 @@ package datadog.trace.core.propagation import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.common.writer.ListWriter import datadog.trace.core.DDSpanContext import datadog.trace.core.test.DDCoreSpecification diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/XRayHttpInjectorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/XRayHttpInjectorTest.groovy index 8425d3e4bd0..f8ecf31c1f7 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/XRayHttpInjectorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/XRayHttpInjectorTest.groovy @@ -5,7 +5,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.DynamicConfig import datadog.trace.api.time.TimeSource -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.core.datastreams.DataStreamsMonitoring import static datadog.trace.api.sampling.PrioritySampling.* diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy index f2226f6c88f..812da453572 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy @@ -4,7 +4,7 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient import datadog.trace.api.sampling.PrioritySampling -import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration import datadog.trace.common.writer.ListWriter import datadog.trace.core.CoreTracer @@ -77,7 +77,7 @@ abstract class DDCoreSpecification extends DDSpecification { null, null, ciVisibilityContextData, - AgentTracer.NoopPathwayContext.INSTANCE, + NoopPathwayContext.INSTANCE, false, propagationTags, ProfilingContextIntegration.NoOp.INSTANCE, diff --git a/dd-trace-core/src/traceAgentTest/groovy/DataStreamsIntegrationTest.groovy b/dd-trace-core/src/traceAgentTest/groovy/DataStreamsIntegrationTest.groovy index 8b5fe50e019..5ed81af35c3 100644 --- a/dd-trace-core/src/traceAgentTest/groovy/DataStreamsIntegrationTest.groovy +++ b/dd-trace-core/src/traceAgentTest/groovy/DataStreamsIntegrationTest.groovy @@ -4,7 +4,7 @@ import datadog.communication.http.OkHttpUtils import datadog.trace.api.Config import datadog.trace.api.TraceConfig import datadog.trace.api.time.ControllableTimeSource -import datadog.trace.bootstrap.instrumentation.api.StatsPoint +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.common.metrics.EventListener import datadog.trace.common.metrics.OkHttpSink import datadog.trace.core.datastreams.DefaultDataStreamsMonitoring diff --git a/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy b/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy index 98a4b53987d..56e4dfe1884 100644 --- a/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy @@ -3,6 +3,7 @@ package datadog.opentracing import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling +import datadog.trace.api.datastreams.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.core.CoreTracer import datadog.trace.core.DDSpan diff --git a/internal-api/build.gradle b/internal-api/build.gradle index e5b9fee70c9..edd75519a6f 100644 --- a/internal-api/build.gradle +++ b/internal-api/build.gradle @@ -57,6 +57,13 @@ excludedClassesCoverage += [ 'datadog.trace.api.appsec.AppSecEventTracker', // A plain enum 'datadog.trace.api.profiling.RecordingType', + // Data Streams Monitoring + "datadog.trace.api.datastreams.Backlog", + "datadog.trace.api.datastreams.InboxItem", + "datadog.trace.api.datastreams.NoopDataStreamsMonitoring", + "datadog.trace.api.datastreams.NoopPathwayContext", + "datadog.trace.api.datastreams.StatsPoint", + // Bootstrap API "datadog.trace.bootstrap.ActiveSubsystems", "datadog.trace.bootstrap.ContextStore.Factory", "datadog.trace.bootstrap.config.provider.ConfigProvider.Singleton", @@ -70,15 +77,12 @@ excludedClassesCoverage += [ "datadog.trace.bootstrap.instrumentation.api.AgentSpan", "datadog.trace.bootstrap.instrumentation.api.AgentSpanContext", "datadog.trace.bootstrap.instrumentation.api.AgentTracer", - "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentDataStreamsMonitoring", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentHistogram", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentPropagation", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentTraceCollector", - "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTraceConfig", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTracerAPI", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI", - "datadog.trace.bootstrap.instrumentation.api.Backlog", "datadog.trace.bootstrap.instrumentation.api.BlackHoleSpan", "datadog.trace.bootstrap.instrumentation.api.BlackHoleSpan.Context", "datadog.trace.bootstrap.instrumentation.api.ErrorPriorities", @@ -98,7 +102,6 @@ excludedClassesCoverage += [ "datadog.trace.bootstrap.instrumentation.api.ScopeSource", "datadog.trace.bootstrap.instrumentation.api.ScopedContext", "datadog.trace.bootstrap.instrumentation.api.ScopedContextKey", - "datadog.trace.bootstrap.instrumentation.api.StatsPoint", "datadog.trace.bootstrap.instrumentation.api.TagContext", "datadog.trace.bootstrap.instrumentation.api.TagContext.HttpHeaders", "datadog.trace.api.civisibility.config.EarlyFlakeDetectionSettings", diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentDataStreamsMonitoring.java b/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java similarity index 90% rename from internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentDataStreamsMonitoring.java rename to internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java index 660c9be04eb..d1683696700 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentDataStreamsMonitoring.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java @@ -1,6 +1,9 @@ -package datadog.trace.bootstrap.instrumentation.api; +package datadog.trace.api.datastreams; import datadog.trace.api.experimental.DataStreamsCheckpointer; +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.Schema; +import datadog.trace.bootstrap.instrumentation.api.SchemaIterator; import java.util.LinkedHashMap; public interface AgentDataStreamsMonitoring extends DataStreamsCheckpointer { diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Backlog.java b/internal-api/src/main/java/datadog/trace/api/datastreams/Backlog.java similarity index 94% rename from internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Backlog.java rename to internal-api/src/main/java/datadog/trace/api/datastreams/Backlog.java index 9b2a26540bc..378ddf4b95c 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/Backlog.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/Backlog.java @@ -1,4 +1,4 @@ -package datadog.trace.bootstrap.instrumentation.api; +package datadog.trace.api.datastreams; import java.util.List; diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/InboxItem.java b/internal-api/src/main/java/datadog/trace/api/datastreams/InboxItem.java new file mode 100644 index 00000000000..70914e8c7c3 --- /dev/null +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/InboxItem.java @@ -0,0 +1,3 @@ +package datadog.trace.api.datastreams; + +public interface InboxItem {} diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java new file mode 100644 index 00000000000..88737bad3b3 --- /dev/null +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java @@ -0,0 +1,59 @@ +package datadog.trace.api.datastreams; + +import datadog.trace.api.experimental.DataStreamsContextCarrier; +import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.Schema; +import datadog.trace.bootstrap.instrumentation.api.SchemaIterator; +import java.util.LinkedHashMap; + +public class NoopDataStreamsMonitoring implements AgentDataStreamsMonitoring { + public static final NoopDataStreamsMonitoring INSTANCE = new NoopDataStreamsMonitoring(); + + @Override + public void trackBacklog(LinkedHashMap sortedTags, long value) {} + + @Override + public void setCheckpoint( + AgentSpan span, + LinkedHashMap sortedTags, + long defaultTimestamp, + long payloadSizeBytes) {} + + @Override + public PathwayContext newPathwayContext() { + return NoopPathwayContext.INSTANCE; + } + + @Override + public void add(StatsPoint statsPoint) {} + + @Override + public int trySampleSchema(String topic) { + return 0; + } + + @Override + public boolean canSampleSchema(String topic) { + return false; + } + + @Override + public Schema getSchema(String schemaName, SchemaIterator iterator) { + return null; + } + + @Override + public void setProduceCheckpoint(String type, String target) {} + + @Override + public void setThreadServiceName(String serviceName) {} + + @Override + public void clearThreadServiceName() {} + + @Override + public void setConsumeCheckpoint(String type, String source, DataStreamsContextCarrier carrier) {} + + @Override + public void setProduceCheckpoint(String type, String target, DataStreamsContextCarrier carrier) {} +} diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java new file mode 100644 index 00000000000..84ccaac93c9 --- /dev/null +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java @@ -0,0 +1,48 @@ +package datadog.trace.api.datastreams; + +import java.util.LinkedHashMap; +import java.util.function.Consumer; + +public class NoopPathwayContext implements PathwayContext { + public static final NoopPathwayContext INSTANCE = new NoopPathwayContext(); + + @Override + public boolean isStarted() { + return false; + } + + @Override + public long getHash() { + return 0L; + } + + @Override + public void setCheckpoint( + LinkedHashMap sortedTags, + Consumer pointConsumer, + long defaultTimestamp, + long payloadSizeBytes) {} + + @Override + public void setCheckpoint( + LinkedHashMap sortedTags, + Consumer pointConsumer, + long defaultTimestamp) {} + + @Override + public void setCheckpoint( + LinkedHashMap sortedTags, Consumer pointConsumer) {} + + @Override + public void saveStats(StatsPoint point) {} + + @Override + public StatsPoint getSavedStats() { + return null; + } + + @Override + public String encode() { + return null; + } +} diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/PathwayContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java similarity index 94% rename from internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/PathwayContext.java rename to internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java index 78ed229d95b..da3c5bbca1e 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/PathwayContext.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java @@ -1,4 +1,4 @@ -package datadog.trace.bootstrap.instrumentation.api; +package datadog.trace.api.datastreams; import java.io.IOException; import java.util.LinkedHashMap; diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/StatsPoint.java b/internal-api/src/main/java/datadog/trace/api/datastreams/StatsPoint.java similarity index 97% rename from internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/StatsPoint.java rename to internal-api/src/main/java/datadog/trace/api/datastreams/StatsPoint.java index fb313ddcef2..9379267f46c 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/StatsPoint.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/StatsPoint.java @@ -1,4 +1,4 @@ -package datadog.trace.bootstrap.instrumentation.api; +package datadog.trace.api.datastreams; import java.util.List; diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java index 1f10c1ed24b..139ea4e4281 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java @@ -1,6 +1,7 @@ package datadog.trace.bootstrap.instrumentation.api; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import java.util.List; import java.util.Map; diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java index 5c5f6355c5d..7a3bcb636e4 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java @@ -7,8 +7,9 @@ import datadog.trace.api.EndpointCheckpointer; import datadog.trace.api.EndpointTracker; import datadog.trace.api.TraceConfig; +import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.NoopDataStreamsMonitoring; import datadog.trace.api.experimental.DataStreamsCheckpointer; -import datadog.trace.api.experimental.DataStreamsContextCarrier; import datadog.trace.api.gateway.CallbackProvider; import datadog.trace.api.gateway.RequestContextSlot; import datadog.trace.api.gateway.SubscriptionService; @@ -23,7 +24,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.function.Consumer; public class AgentTracer { private static final String DEFAULT_INSTRUMENTATION_NAME = "datadog"; @@ -574,7 +574,7 @@ public ScopeState newScopeState() { @Override public AgentDataStreamsMonitoring getDataStreamsMonitoring() { - return NoopAgentDataStreamsMonitoring.INSTANCE; + return NoopDataStreamsMonitoring.INSTANCE; } @Override @@ -624,105 +624,6 @@ public void registerContinuation(final AgentScope.Continuation continuation) {} public void cancelContinuation(final AgentScope.Continuation continuation) {} } - public static class NoopAgentDataStreamsMonitoring implements AgentDataStreamsMonitoring { - public static final NoopAgentDataStreamsMonitoring INSTANCE = - new NoopAgentDataStreamsMonitoring(); - - @Override - public void trackBacklog(LinkedHashMap sortedTags, long value) {} - - @Override - public void setCheckpoint( - AgentSpan span, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) {} - - @Override - public PathwayContext newPathwayContext() { - return NoopPathwayContext.INSTANCE; - } - - @Override - public void add(StatsPoint statsPoint) {} - - @Override - public int trySampleSchema(String topic) { - return 0; - } - - @Override - public boolean canSampleSchema(String topic) { - return false; - } - - @Override - public Schema getSchema(String schemaName, SchemaIterator iterator) { - return null; - } - - @Override - public void setProduceCheckpoint(String type, String target) {} - - @Override - public void setThreadServiceName(String serviceName) {} - - @Override - public void clearThreadServiceName() {} - - @Override - public void setConsumeCheckpoint( - String type, String source, DataStreamsContextCarrier carrier) {} - - @Override - public void setProduceCheckpoint( - String type, String target, DataStreamsContextCarrier carrier) {} - } - - public static class NoopPathwayContext implements PathwayContext { - public static final NoopPathwayContext INSTANCE = new NoopPathwayContext(); - - @Override - public boolean isStarted() { - return false; - } - - @Override - public long getHash() { - return 0L; - } - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp, - long payloadSizeBytes) {} - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp) {} - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, Consumer pointConsumer) {} - - @Override - public void saveStats(StatsPoint point) {} - - @Override - public StatsPoint getSavedStats() { - return null; - } - - @Override - public String encode() { - return null; - } - } - public static class NoopAgentHistogram implements AgentHistogram { public static final NoopAgentHistogram INSTANCE = new NoopAgentHistogram(); diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InboxItem.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InboxItem.java deleted file mode 100644 index 1f56183e41d..00000000000 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/InboxItem.java +++ /dev/null @@ -1,3 +0,0 @@ -package datadog.trace.bootstrap.instrumentation.api; - -public interface InboxItem {} diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/NoopSpanContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/NoopSpanContext.java index 01cb0c4479d..3a15ff15a2d 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/NoopSpanContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/NoopSpanContext.java @@ -4,6 +4,8 @@ import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; +import datadog.trace.api.datastreams.NoopPathwayContext; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import java.util.List; import java.util.Map; @@ -40,7 +42,7 @@ public Iterable> baggageItems() { @Override public PathwayContext getPathwayContext() { - return AgentTracer.NoopPathwayContext.INSTANCE; + return NoopPathwayContext.INSTANCE; } @Override diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java index fdf9580cbb9..226dca2bc30 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/TagContext.java @@ -7,6 +7,7 @@ import datadog.trace.api.DDTraceId; import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; +import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.sampling.PrioritySampling; import java.util.ArrayList; import java.util.Collections; From 1ebac34c1f6eb9964aab8cdda93d0714a76435b8 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Tue, 4 Feb 2025 10:42:53 +0100 Subject: [PATCH 6/8] feat(dsm): Clean up API Remove DSM injection method from AgentPropagation Make checkpoint use DataStreamsContext --- .../decorator/HttpServerDecorator.java | 3 +- .../grpc/server/TracingServerInterceptor.java | 3 +- .../aws/v0/AwsSdkClientDecorator.java | 5 +- .../aws/v0/TracingRequestHandler.java | 6 +- .../aws/v2/AwsSdkClientDecorator.java | 8 +- .../aws/v1/sqs/TracingIterator.java | 3 +- .../aws/v2/sqs/TracingIterator.java | 3 +- .../googlepubsub/PubSubDecorator.java | 8 +- .../grpc/server/TracingServerInterceptor.java | 3 +- .../kafka_clients/TracingIterator.java | 6 +- .../kafka_clients38/TracingIterator.java | 6 +- .../KafkaStreamTaskInstrumentation.java | 10 +- .../src/test/groovy/TypeConverterTest.groovy | 1 - .../rabbitmq/amqp/RabbitDecorator.java | 3 +- .../java/datadog/trace/core/CoreTracer.java | 7 +- .../DataStreamContextExtractor.java | 64 -------- .../DataStreamContextInjector.java | 90 ----------- .../DataStreamsContextCarrierAdapter.java | 18 ++- .../datastreams/DataStreamsMonitoring.java | 16 -- .../datastreams/DataStreamsPropagator.java | 14 +- .../DefaultDataStreamsMonitoring.java | 47 +++--- .../datastreams/DefaultPathwayContext.java | 25 +-- .../core/propagation/CorePropagation.java | 45 ------ .../DefaultDataStreamsMonitoringTest.groovy | 9 +- .../DefaultPathwayContextTest.groovy | 145 +++++++++--------- .../opentracing/TypeConverterTest.groovy | 1 - .../AgentDataStreamsMonitoring.java | 14 +- .../api/datastreams/DataStreamsContext.java | 20 ++- .../NoopDataStreamsMonitoring.java | 6 +- .../api/datastreams/NoopPathwayContext.java | 17 +- .../trace/api/datastreams/PathwayContext.java | 15 +- .../instrumentation/api/AgentPropagation.java | 16 -- .../instrumentation/api/AgentTracer.java | 18 --- .../datastreams/DataStreamsContextTest.groovy | 2 +- 34 files changed, 185 insertions(+), 472 deletions(-) delete mode 100644 dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextExtractor.java delete mode 100644 dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java delete mode 100644 dd-trace-core/src/main/java/datadog/trace/core/propagation/CorePropagation.java diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java index 9383c9f1f29..ca2a241f9c1 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java @@ -1,6 +1,7 @@ package datadog.trace.bootstrap.instrumentation.decorator; import static datadog.trace.api.cache.RadixTreeCache.UNSET_STATUS; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR; @@ -148,7 +149,7 @@ public AgentSpan startSpan( } AgentPropagation.ContextVisitor getter = getter(); if (null != carrier && null != getter) { - tracer().getDataStreamsMonitoring().setCheckpoint(span, SERVER_PATHWAY_EDGE_TAGS, 0, 0); + tracer().getDataStreamsMonitoring().setCheckpoint(span, fromTags(SERVER_PATHWAY_EDGE_TAGS)); } return span; } diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java index c5b0cee8e9b..5b22d0d927b 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.armeria.grpc.server; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -71,7 +72,7 @@ public ServerCall.Listener interceptCall( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, SERVER_PATHWAY_EDGE_TAGS, 0, 0); + .setCheckpoint(span, fromTags(SERVER_PATHWAY_EDGE_TAGS)); RequestContext reqContext = span.getRequestContext(); if (reqContext != null) { diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java index 088649206c2..59b2c306f93 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.aws.v0; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities.RPC_COMMAND_NAME; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; @@ -264,7 +265,7 @@ public AgentSpan onServiceResponse( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, 0, responseSize); + .setCheckpoint(span, create(sortedTags, 0, responseSize)); } if ("PutObjectRequest".equalsIgnoreCase(awsOperation) @@ -285,7 +286,7 @@ public AgentSpan onServiceResponse( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, 0, payloadSize); + .setCheckpoint(span, create(sortedTags, 0, payloadSize)); } } } diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java index 463263a9ce0..080980b8a02 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.aws.v0; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.XRAY_TRACING_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan; @@ -19,6 +20,7 @@ import datadog.context.propagation.Propagators; import datadog.trace.api.Config; import datadog.trace.api.datastreams.AgentDataStreamsMonitoring; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -122,8 +124,8 @@ public void afterResponse(final Request request, final Response response) AgentDataStreamsMonitoring dataStreamsMonitoring = AgentTracer.get().getDataStreamsMonitoring(); PathwayContext pathwayContext = dataStreamsMonitoring.newPathwayContext(); - pathwayContext.setCheckpoint( - sortedTags, dataStreamsMonitoring::add, arrivalTime.getTime()); + DataStreamsContext context = create(sortedTags, arrivalTime.getTime(), 0); + pathwayContext.setCheckpoint(context, dataStreamsMonitoring::add); if (!span.context().getPathwayContext().isStarted()) { span.context().mergePathwayContext(pathwayContext); } diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java index d80bc2df4da..3e9912a3dae 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.aws.v2; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -361,7 +362,8 @@ public AgentSpan onSdkResponse( AgentTracer.get().getDataStreamsMonitoring(); PathwayContext pathwayContext = dataStreamsMonitoring.newPathwayContext(); pathwayContext.setCheckpoint( - sortedTags, dataStreamsMonitoring::add, arrivalTime.toEpochMilli()); + create(sortedTags, arrivalTime.toEpochMilli(), 0), + dataStreamsMonitoring::add); if (!span.context().getPathwayContext().isStarted()) { span.context().mergePathwayContext(pathwayContext); } @@ -391,7 +393,7 @@ public AgentSpan onSdkResponse( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, 0, responseSize); + .setCheckpoint(span, create(sortedTags, 0, responseSize)); } if ("PutObject".equalsIgnoreCase(awsOperation)) { @@ -411,7 +413,7 @@ public AgentSpan onSdkResponse( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, 0, payloadSize); + .setCheckpoint(span, create(sortedTags, 0, payloadSize)); } } } diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java index ab7067801df..0cd6f6cbcdf 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.aws.v1.sqs; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -90,7 +91,7 @@ protected void startNewMessageSpan(Message message) { sortedTags.put(DIRECTION_TAG, DIRECTION_IN); sortedTags.put(TOPIC_TAG, urlFileName(queueUrl)); sortedTags.put(TYPE_TAG, "sqs"); - AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, sortedTags, 0, 0); + AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, create(sortedTags, 0, 0)); CONSUMER_DECORATE.afterStart(span); CONSUMER_DECORATE.onConsume(span, queueUrl); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java index 2bff193532b..503d5efa5b2 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.aws.v2.sqs; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -92,7 +93,7 @@ protected void startNewMessageSpan(Message message) { sortedTags.put(DIRECTION_TAG, DIRECTION_IN); sortedTags.put(TOPIC_TAG, urlFileName(queueUrl)); sortedTags.put(TYPE_TAG, "sqs"); - AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, sortedTags, 0, 0); + AgentTracer.get().getDataStreamsMonitoring().setCheckpoint(span, create(sortedTags, 0, 0)); CONSUMER_DECORATE.afterStart(span); CONSUMER_DECORATE.onConsume(span, queueUrl, requestId); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java index 31c430def97..f966ca8b3c1 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java @@ -13,6 +13,7 @@ import datadog.trace.api.Functions; import datadog.trace.api.cache.DDCache; import datadog.trace.api.cache.DDCaches; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; @@ -141,9 +142,10 @@ public AgentSpan onConsume(final PubsubMessage message, final String subscriptio .getDataStreamsMonitoring() .setCheckpoint( span, - sortedTags, - publishTime.getSeconds() * 1_000 + publishTime.getNanos() / (int) 1e6, - message.getSerializedSize()); + DataStreamsContext.create( + sortedTags, + publishTime.getSeconds() * 1_000 + publishTime.getNanos() / (int) 1e6, + message.getSerializedSize())); afterStart(span); span.setResourceName( CONSUMER_RESOURCE_NAME_CACHE.computeIfAbsent(parsedSubscription, CONSUMER_PREFIX)); diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java index aaf5385619d..954d7458231 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.grpc.server; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -70,7 +71,7 @@ public ServerCall.Listener interceptCall( AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, SERVER_PATHWAY_EDGE_TAGS, 0, 0); + .setCheckpoint(span, fromTags(SERVER_PATHWAY_EDGE_TAGS)); RequestContext reqContext = span.getRequestContext(); if (reqContext != null) { diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java index e7a35eccc9a..610ad20a2ca 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.kafka_clients; -import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; @@ -113,7 +113,7 @@ protected void startNewRecordSpan(ConsumerRecord val) { if (STREAMING_CONTEXT.isDisabledForTopic(val.topic())) { AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, val.timestamp(), payloadSize); + .setCheckpoint(span, create(sortedTags, val.timestamp(), payloadSize)); } else { // when we're in a streaming context we want to consume only from source topics if (STREAMING_CONTEXT.isSourceTopic(val.topic())) { @@ -122,7 +122,7 @@ protected void startNewRecordSpan(ConsumerRecord val) { // some other instance of the application, breaking the context propagation // for DSM users Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); - DataStreamsContext dsmContext = fromKafka(sortedTags, val.timestamp(), payloadSize); + DataStreamsContext dsmContext = create(sortedTags, val.timestamp(), payloadSize); dsmPropagator.inject(span.with(dsmContext), val.headers(), SETTER); } } diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java index 942cac3e990..1c127778141 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.kafka_clients38; -import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; @@ -113,7 +113,7 @@ protected void startNewRecordSpan(ConsumerRecord val) { if (StreamingContext.STREAMING_CONTEXT.isDisabledForTopic(val.topic())) { AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, val.timestamp(), payloadSize); + .setCheckpoint(span, create(sortedTags, val.timestamp(), payloadSize)); } else { // when we're in a streaming context we want to consume only from source topics if (StreamingContext.STREAMING_CONTEXT.isSourceTopic(val.topic())) { @@ -122,7 +122,7 @@ protected void startNewRecordSpan(ConsumerRecord val) { // some other instance of the application, breaking the context propagation // for DSM users Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); - DataStreamsContext dsmContext = fromKafka(sortedTags, val.timestamp(), payloadSize); + DataStreamsContext dsmContext = create(sortedTags, val.timestamp(), payloadSize); dsmPropagator.inject(span.with(dsmContext), val.headers(), SETTER); } } diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java index 51c663e9b57..33d62f4cdb2 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.kafka_streams; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; -import static datadog.trace.api.datastreams.DataStreamsContext.fromKafka; +import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; @@ -265,11 +265,11 @@ public static void start( if (STREAMING_CONTEXT.isDisabledForTopic(record.topic())) { AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, record.timestamp, payloadSize); + .setCheckpoint(span, create(sortedTags, record.timestamp, payloadSize)); } else { if (STREAMING_CONTEXT.isSourceTopic(record.topic())) { Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); - DataStreamsContext dsmContext = fromKafka(sortedTags, record.timestamp, payloadSize); + DataStreamsContext dsmContext = create(sortedTags, record.timestamp, payloadSize); dsmPropagator.inject(span.with(dsmContext), record, SR_SETTER); } } @@ -347,11 +347,11 @@ public static void start( if (STREAMING_CONTEXT.isDisabledForTopic(record.topic())) { AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, record.timestamp(), payloadSize); + .setCheckpoint(span, create(sortedTags, record.timestamp(), payloadSize)); } else { if (STREAMING_CONTEXT.isSourceTopic(record.topic())) { Propagator dsmPropagator = Propagators.forConcern(DSM_CONCERN); - DataStreamsContext dsmContext = fromKafka(sortedTags, record.timestamp(), payloadSize); + DataStreamsContext dsmContext = create(sortedTags, record.timestamp(), payloadSize); dsmPropagator.inject(span.with(dsmContext), record, PR_SETTER); } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy index 99d5d5f5362..ca3c4eaff49 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/TypeConverterTest.groovy @@ -3,7 +3,6 @@ import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.sampling.PrioritySampling import datadog.trace.api.datastreams.NoopPathwayContext -import datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext import datadog.trace.bootstrap.instrumentation.api.ScopeSource import datadog.trace.core.DDSpan import datadog.trace.core.DDSpanContext diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java index da98323640e..baf0985199c 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.rabbitmq.amqp; +import static datadog.trace.api.datastreams.DataStreamsContext.create; 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; @@ -253,7 +254,7 @@ public static AgentScope startReceivingSpan( sortedTags.put(TYPE_TAG, "rabbitmq"); AgentTracer.get() .getDataStreamsMonitoring() - .setCheckpoint(span, sortedTags, produceMillis, 0); + .setCheckpoint(span, create(sortedTags, produceMillis, 0)); } CONSUMER_DECORATE.afterStart(span); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index c546c7172f1..2e6d016276a 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -86,7 +86,6 @@ import datadog.trace.core.monitor.HealthMetrics; import datadog.trace.core.monitor.MonitoringImpl; import datadog.trace.core.monitor.TracerHealthMetrics; -import datadog.trace.core.propagation.CorePropagation; import datadog.trace.core.propagation.ExtractedContext; import datadog.trace.core.propagation.HttpCodec; import datadog.trace.core.propagation.PropagationTags; @@ -228,7 +227,7 @@ public static CoreTracerBuilder builder() { private final SortedSet interceptors = new ConcurrentSkipListSet<>(Comparator.comparingInt(TraceInterceptor::priority)); - private final CorePropagation propagation; + private final AgentPropagation propagation; private final boolean logs128bTraceIdEnabled; private final InstrumentationGateway instrumentationGateway; @@ -714,8 +713,8 @@ private CoreTracer( sharedCommunicationObjects.whenReady(this.dataStreamsMonitoring::start); - // Store all propagators to propagation -- only DSM injection left - this.propagation = new CorePropagation(this.dataStreamsMonitoring.injector()); + // TODO Need to be removed + this.propagation = AgentTracer.NOOP_TRACER.propagate(); // Register context propagators HttpCodec.Extractor tracingExtractor = diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextExtractor.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextExtractor.java deleted file mode 100644 index f831d1cf10d..00000000000 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextExtractor.java +++ /dev/null @@ -1,64 +0,0 @@ -package datadog.trace.core.datastreams; - -import datadog.trace.api.TraceConfig; -import datadog.trace.api.time.TimeSource; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import datadog.trace.bootstrap.instrumentation.api.TagContext; -import datadog.trace.core.propagation.HttpCodec; -import java.util.function.Supplier; - -public class DataStreamContextExtractor implements HttpCodec.Extractor { - private final HttpCodec.Extractor delegate; - private final TimeSource timeSource; - private final Supplier traceConfigSupplier; - private final long hashOfKnownTags; - private final String serviceNameOverride; - - public DataStreamContextExtractor( - HttpCodec.Extractor delegate, - TimeSource timeSource, - Supplier traceConfigSupplier, - long hashOfKnownTags, - String serviceNameOverride) { - this.delegate = delegate; - this.timeSource = timeSource; - this.traceConfigSupplier = traceConfigSupplier; - this.hashOfKnownTags = hashOfKnownTags; - this.serviceNameOverride = serviceNameOverride; - } - - @Override - public TagContext extract(C carrier, AgentPropagation.ContextVisitor getter) { - // Delegate the default HTTP extraction - TagContext extracted = this.delegate.extract(carrier, getter); - - if (extracted != null) { - boolean shouldExtractPathwayContext = - extracted.getTraceConfig() == null - ? traceConfigSupplier.get().isDataStreamsEnabled() - : extracted.getTraceConfig().isDataStreamsEnabled(); - - if (shouldExtractPathwayContext) { - DefaultPathwayContext pathwayContext = - DefaultPathwayContext.extract( - carrier, getter, this.timeSource, this.hashOfKnownTags, serviceNameOverride); - - extracted.withPathwayContext(pathwayContext); - } - - return extracted; - } else if (traceConfigSupplier.get().isDataStreamsEnabled()) { - DefaultPathwayContext pathwayContext = - DefaultPathwayContext.extract( - carrier, getter, this.timeSource, this.hashOfKnownTags, serviceNameOverride); - - if (pathwayContext != null) { - extracted = new TagContext(); - extracted.withPathwayContext(pathwayContext); - return extracted; - } - } - - return null; - } -} diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java deleted file mode 100644 index 2994aa9518e..00000000000 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamContextInjector.java +++ /dev/null @@ -1,90 +0,0 @@ -package datadog.trace.core.datastreams; - -import static datadog.trace.api.DDTags.PATHWAY_HASH; -import static datadog.trace.api.datastreams.PathwayContext.PROPAGATION_KEY_BASE64; - -import datadog.trace.api.datastreams.PathwayContext; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import java.io.IOException; -import java.util.LinkedHashMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class DataStreamContextInjector { - private static final Logger LOGGER = LoggerFactory.getLogger(DataStreamContextInjector.class); - private final DataStreamsMonitoring dataStreamsMonitoring; - - public DataStreamContextInjector(DataStreamsMonitoring dataStreamsMonitoring) { - this.dataStreamsMonitoring = dataStreamsMonitoring; - } - - public void injectPathwayContext( - AgentSpan span, - C carrier, - AgentPropagation.Setter setter, - LinkedHashMap sortedTags) { - injectPathwayContext(span, carrier, setter, sortedTags, 0, 0, true); - } - - public void injectPathwayContext( - AgentSpan span, - C carrier, - AgentPropagation.Setter setter, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) { - injectPathwayContext( - span, carrier, setter, sortedTags, defaultTimestamp, payloadSizeBytes, true); - } - - /** Same as injectPathwayContext, but the stats collected in the StatsPoint are not sent. */ - public void injectPathwayContextWithoutSendingStats( - AgentSpan span, - C carrier, - AgentPropagation.Setter setter, - LinkedHashMap sortedTags) { - injectPathwayContext(span, carrier, setter, sortedTags, 0, 0, false); - } - - private void injectPathwayContext( - AgentSpan span, - C carrier, - AgentPropagation.Setter setter, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes, - boolean sendCheckpoint) { - PathwayContext pathwayContext = span.context().getPathwayContext(); - if (pathwayContext == null - || (span.traceConfig() != null && !span.traceConfig().isDataStreamsEnabled())) { - return; - } - pathwayContext.setCheckpoint( - sortedTags, - sendCheckpoint ? dataStreamsMonitoring::add : pathwayContext::saveStats, - defaultTimestamp, - payloadSizeBytes); - - boolean injected = injectPathwayContext(pathwayContext, carrier, setter); - - if (injected && pathwayContext.getHash() != 0) { - span.setTag(PATHWAY_HASH, Long.toUnsignedString(pathwayContext.getHash())); - } - } - - private static boolean injectPathwayContext( - PathwayContext pathwayContext, C carrier, AgentPropagation.Setter setter) { - try { - String encodedContext = pathwayContext.encode(); - if (encodedContext != null) { - LOGGER.debug("Injecting pathway context {}", pathwayContext); - setter.set(carrier, PROPAGATION_KEY_BASE64, encodedContext); - return true; - } - } catch (IOException e) { - LOGGER.debug("Unable to set encode pathway context", e); - } - return false; - } -} diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsContextCarrierAdapter.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsContextCarrierAdapter.java index a9460bae222..1a3b897a604 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsContextCarrierAdapter.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsContextCarrierAdapter.java @@ -1,13 +1,15 @@ package datadog.trace.core.datastreams; +import datadog.context.propagation.CarrierSetter; +import datadog.context.propagation.CarrierVisitor; import datadog.trace.api.experimental.DataStreamsContextCarrier; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation.KeyClassifier; import java.util.Map; +import java.util.function.BiConsumer; +import javax.annotation.ParametersAreNonnullByDefault; +@ParametersAreNonnullByDefault public class DataStreamsContextCarrierAdapter - implements AgentPropagation.Setter, - AgentPropagation.ContextVisitor { + implements CarrierSetter, CarrierVisitor { public static final DataStreamsContextCarrierAdapter INSTANCE = new DataStreamsContextCarrierAdapter(); @@ -20,11 +22,11 @@ public void set(DataStreamsContextCarrier carrier, String key, String value) { } @Override - public void forEachKey(DataStreamsContextCarrier carrier, KeyClassifier classifier) { + public void forEachKeyValue( + DataStreamsContextCarrier carrier, BiConsumer visitor) { for (Map.Entry entry : carrier.entries()) { - if (null != entry.getValue() - && !classifier.accept(entry.getKey(), entry.getValue().toString())) { - return; + if (null != entry.getValue()) { + visitor.accept(entry.getKey(), entry.getValue().toString()); } } } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java index 8f7082a4270..82d5af02f04 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsMonitoring.java @@ -6,7 +6,6 @@ import datadog.trace.api.experimental.DataStreamsContextCarrier; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; -import datadog.trace.core.propagation.HttpCodec; public interface DataStreamsMonitoring extends AgentDataStreamsMonitoring, AutoCloseable { void start(); @@ -18,21 +17,6 @@ public interface DataStreamsMonitoring extends AgentDataStreamsMonitoring, AutoC */ Propagator propagator(); - /** - * Get a context extractor that support {@link PathwayContext} extraction. - * - * @param delegate The extractor to delegate the common trace context extraction. - * @return An extractor with DSM context extraction. - */ - HttpCodec.Extractor extractor(HttpCodec.Extractor delegate); - - /** - * Gets a context injector to propagate {@link PathwayContext}. - * - * @return A context injector if supported, {@code null} otherwise. - */ - DataStreamContextInjector injector(); - /** * Injects DSM {@link PathwayContext} into a span {@link AgentSpanContext}. * diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java index 9769d55e573..9750a8793fd 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DataStreamsPropagator.java @@ -10,16 +10,17 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.datastreams.PathwayContext; +import datadog.trace.api.datastreams.StatsPoint; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.TagContext; import java.io.IOException; +import java.util.function.Consumer; import java.util.function.Supplier; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; -// TODO Javadoc @ParametersAreNonnullByDefault public class DataStreamsPropagator implements Propagator { private final DataStreamsMonitoring dataStreamsMonitoring; @@ -54,15 +55,10 @@ public void inject(Context context, C carrier, CarrierSetter setter) { return; } - // TODO Allow set checkpoint to use DsmContext as parameter? - pathwayContext.setCheckpoint( - dsmContext.sortedTags(), - dsmContext.sendCheckpoint() ? dataStreamsMonitoring::add : pathwayContext::saveStats, - dsmContext.defaultTimestamp(), - dsmContext.payloadSizeBytes()); - + Consumer pointConsumer = + dsmContext.sendCheckpoint() ? this.dataStreamsMonitoring::add : pathwayContext::saveStats; + pathwayContext.setCheckpoint(dsmContext, pointConsumer); boolean injected = injectPathwayContext(pathwayContext, carrier, setter); - if (injected && pathwayContext.getHash() != 0) { span.setTag(PATHWAY_HASH, Long.toUnsignedString(pathwayContext.getHash())); } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java index a537a9fb25c..ae392ff94ed 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultDataStreamsMonitoring.java @@ -1,6 +1,7 @@ package datadog.trace.core.datastreams; import static datadog.communication.ddagent.DDAgentFeaturesDiscovery.V01_DATASTREAMS_ENDPOINT; +import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_OUT; @@ -19,6 +20,7 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.WellKnownTags; import datadog.trace.api.datastreams.Backlog; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.datastreams.InboxItem; import datadog.trace.api.datastreams.NoopPathwayContext; import datadog.trace.api.datastreams.PathwayContext; @@ -33,7 +35,6 @@ import datadog.trace.common.metrics.Sink; import datadog.trace.core.DDSpan; import datadog.trace.core.DDTraceCoreInfo; -import datadog.trace.core.propagation.HttpCodec; import datadog.trace.util.AgentTaskScheduler; import java.util.ArrayList; import java.util.Collections; @@ -68,8 +69,8 @@ public class DefaultDataStreamsMonitoring implements DataStreamsMonitoring, Even private final long hashOfKnownTags; private final Supplier traceConfigSupplier; private final long bucketDurationNanos; - private final DataStreamContextInjector injector; private final Thread thread; + private final DataStreamsPropagator propagator; private AgentTaskScheduler.Scheduled cancellation; private volatile long nextFeatureCheck; private volatile boolean supportsDataStreams = false; @@ -128,11 +129,18 @@ public DefaultDataStreamsMonitoring( this.hashOfKnownTags = DefaultPathwayContext.getBaseHash(wellKnownTags); this.payloadWriter = payloadWriter; this.bucketDurationNanos = bucketDurationNanos; - this.injector = new DataStreamContextInjector(this); thread = newAgentThread(DATA_STREAMS_MONITORING, new InboxProcessor()); sink.register(this); schemaSamplers = new ConcurrentHashMap<>(); + + this.propagator = + new DataStreamsPropagator( + this, + this.traceConfigSupplier, + this.timeSource, + this.hashOfKnownTags, + getThreadServiceName()); } @Override @@ -203,23 +211,7 @@ public PathwayContext newPathwayContext() { @Override public Propagator propagator() { - return new DataStreamsPropagator( - this, - this.traceConfigSupplier, - this.timeSource, - this.hashOfKnownTags, - getThreadServiceName()); - } - - @Override - public HttpCodec.Extractor extractor(HttpCodec.Extractor delegate) { - return new DataStreamContextExtractor( - delegate, timeSource, traceConfigSupplier, hashOfKnownTags, getThreadServiceName()); - } - - @Override - public DataStreamContextInjector injector() { - return this.injector; + return this.propagator; } @Override @@ -249,14 +241,10 @@ public void trackBacklog(LinkedHashMap sortedTags, long value) { } @Override - public void setCheckpoint( - AgentSpan span, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) { + public void setCheckpoint(AgentSpan span, DataStreamsContext context) { PathwayContext pathwayContext = span.context().getPathwayContext(); if (pathwayContext != null) { - pathwayContext.setCheckpoint(sortedTags, this::add, defaultTimestamp, payloadSizeBytes); + pathwayContext.setCheckpoint(context, this::add); } } @@ -280,7 +268,7 @@ public void setConsumeCheckpoint(String type, String source, DataStreamsContextC sortedTags.put(TOPIC_TAG, source); sortedTags.put(TYPE_TAG, type); - setCheckpoint(span, sortedTags, 0, 0); + setCheckpoint(span, fromTags(sortedTags)); } public void setProduceCheckpoint( @@ -304,8 +292,9 @@ public void setProduceCheckpoint( sortedTags.put(TOPIC_TAG, target); sortedTags.put(TYPE_TAG, type); - this.injector.injectPathwayContext( - span, carrier, DataStreamsContextCarrierAdapter.INSTANCE, sortedTags); + DataStreamsContext dsmContext = fromTags(sortedTags); + this.propagator.inject( + span.with(dsmContext), carrier, DataStreamsContextCarrierAdapter.INSTANCE); } @Override diff --git a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java index 7db93af2518..aad8be72b5f 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/datastreams/DefaultPathwayContext.java @@ -10,6 +10,7 @@ import datadog.context.propagation.CarrierVisitor; import datadog.trace.api.Config; import datadog.trace.api.WellKnownTags; +import datadog.trace.api.datastreams.DataStreamsContext; import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.datastreams.StatsPoint; import datadog.trace.api.time.TimeSource; @@ -105,37 +106,21 @@ public long getHash() { } @Override - public void setCheckpoint( - LinkedHashMap sortedTags, Consumer pointConsumer) { - setCheckpoint(sortedTags, pointConsumer, 0, 0); - } - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp) { - setCheckpoint(sortedTags, pointConsumer, defaultTimestamp, 0); - } - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp, - long payloadSizeBytes) { + public void setCheckpoint(DataStreamsContext context, Consumer pointConsumer) { long startNanos = timeSource.getCurrentTimeNanos(); long nanoTicks = timeSource.getNanoTicks(); lock.lock(); try { // So far, each tag key has only one tag value, so we're initializing the capacity to match // the number of tag keys for now. We should revisit this later if it's no longer the case. + LinkedHashMap sortedTags = context.sortedTags(); List allTags = new ArrayList<>(sortedTags.size()); PathwayHashBuilder pathwayHashBuilder = new PathwayHashBuilder(hashOfKnownTags, serviceNameOverride); DataSetHashBuilder aggregationHashBuilder = new DataSetHashBuilder(); if (!started) { + long defaultTimestamp = context.defaultTimestamp(); if (defaultTimestamp == 0) { pathwayStartNanos = startNanos; pathwayStartNanoTicks = nanoTicks; @@ -196,7 +181,7 @@ public void setCheckpoint( startNanos, pathwayLatencyNano, edgeLatencyNano, - payloadSizeBytes, + context.payloadSizeBytes(), serviceNameOverride); edgeStartNanoTicks = nanoTicks; hash = newHash; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/CorePropagation.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/CorePropagation.java deleted file mode 100644 index 90f43736c38..00000000000 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/CorePropagation.java +++ /dev/null @@ -1,45 +0,0 @@ -package datadog.trace.core.propagation; - -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; -import datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import datadog.trace.core.datastreams.DataStreamContextInjector; -import java.util.LinkedHashMap; - -public class CorePropagation implements AgentPropagation { - private final DataStreamContextInjector dataStreamContextInjector; - - /** - * Constructor - * - * @param dataStreamContextInjector The DSM context injector, as a specific object until generic - * context injection is available. - */ - public CorePropagation(DataStreamContextInjector dataStreamContextInjector) { - this.dataStreamContextInjector = dataStreamContextInjector; - } - - @Override - public void injectPathwayContext( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags) { - this.dataStreamContextInjector.injectPathwayContext(span, carrier, setter, sortedTags); - } - - @Override - public void injectPathwayContext( - AgentSpan span, - C carrier, - Setter setter, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) { - this.dataStreamContextInjector.injectPathwayContext( - span, carrier, setter, sortedTags, defaultTimestamp, payloadSizeBytes); - } - - @Override - public void injectPathwayContextWithoutSendingStats( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags) { - this.dataStreamContextInjector.injectPathwayContextWithoutSendingStats( - span, carrier, setter, sortedTags); - } -} diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy index dfdbb34f019..ffcd15cd0c3 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultDataStreamsMonitoringTest.groovy @@ -4,16 +4,16 @@ import datadog.communication.ddagent.DDAgentFeaturesDiscovery import datadog.trace.api.Config import datadog.trace.api.TraceConfig import datadog.trace.api.WellKnownTags +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.api.experimental.DataStreamsContextCarrier import datadog.trace.api.time.ControllableTimeSource -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation -import datadog.trace.api.datastreams.StatsPoint import datadog.trace.common.metrics.EventListener import datadog.trace.common.metrics.Sink import datadog.trace.core.test.DDCoreSpecification import spock.util.concurrent.PollingConditions import java.util.concurrent.TimeUnit +import java.util.function.BiConsumer import static DefaultDataStreamsMonitoring.FEATURE_CHECK_INTERVAL_NANOS import static java.util.concurrent.TimeUnit.SECONDS @@ -101,12 +101,11 @@ class DefaultDataStreamsMonitoringTest extends DDCoreSpecification { when: DataStreamsContextCarrierAdapter.INSTANCE.set(carrier, keyName, keyValue) - DataStreamsContextCarrierAdapter.INSTANCE.forEachKey(carrier, new AgentPropagation.KeyClassifier() { + DataStreamsContextCarrierAdapter.INSTANCE.forEachKeyValue(carrier, new BiConsumer() { @Override - boolean accept(String key, String value) { + void accept(String key, String value) { if (key == keyName) { extracted = value - return true } } }) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy index c50a5145c62..3761944b6ba 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/datastreams/DefaultPathwayContextTest.groovy @@ -5,20 +5,22 @@ import datadog.trace.api.Config import datadog.trace.api.DDTraceId import datadog.trace.api.TraceConfig import datadog.trace.api.WellKnownTags +import datadog.trace.api.datastreams.StatsPoint import datadog.trace.api.time.ControllableTimeSource import datadog.trace.bootstrap.instrumentation.api.AgentPropagation -import datadog.trace.api.datastreams.PathwayContext -import datadog.trace.api.datastreams.StatsPoint -import datadog.trace.bootstrap.instrumentation.api.TagContext +import datadog.trace.bootstrap.instrumentation.api.AgentSpan import datadog.trace.common.metrics.Sink import datadog.trace.core.propagation.ExtractedContext -import datadog.trace.core.propagation.HttpCodec import datadog.trace.core.test.DDCoreSpecification import java.util.function.Consumer +import static datadog.context.Context.root import static datadog.trace.api.TracePropagationStyle.DATADOG import static datadog.trace.api.config.GeneralConfig.PRIMARY_TAG +import static datadog.trace.api.datastreams.DataStreamsContext.create +import static datadog.trace.api.datastreams.DataStreamsContext.fromTags +import static datadog.trace.api.datastreams.PathwayContext.PROPAGATION_KEY_BASE64 import static java.util.concurrent.TimeUnit.MILLISECONDS class DefaultPathwayContextTest extends DDCoreSpecification { @@ -49,7 +51,7 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(50) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) then: context.isStarted() @@ -64,10 +66,10 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(50) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) timeSource.advance(25) context.setCheckpoint( - new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + fromTags(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) then: context.isStarted() @@ -91,7 +93,8 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(25) context.setCheckpoint( - new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), pointConsumer, 0, 72) + create(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), 0, 72), + pointConsumer) then: context.isStarted() @@ -111,13 +114,13 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(50) - context.setCheckpoint(new LinkedHashMap<>(["direction": "out", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["direction": "out", "type": "kafka"])), pointConsumer) timeSource.advance(25) context.setCheckpoint( - new LinkedHashMap<>(["direction": "in", "group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + fromTags(new LinkedHashMap<>(["direction": "in", "group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) timeSource.advance(30) context.setCheckpoint( - new LinkedHashMap<>(["direction": "in", "group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + fromTags(new LinkedHashMap<>(["direction": "in", "group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) then: context.isStarted() @@ -163,12 +166,12 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "s3", "ds.namespace": "my_bucket", "ds.name": "my_object.csv", "direction": "in"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "s3", "ds.namespace": "my_bucket", "ds.name": "my_object.csv", "direction": "in"])), pointConsumer) def encoded = context.encode() timeSource.advance(MILLISECONDS.toNanos(2)) def decodedContext = DefaultPathwayContext.decode(timeSource, baseHash, null, encoded) timeSource.advance(MILLISECONDS.toNanos(25)) - context.setCheckpoint(new LinkedHashMap<>(["type": "s3", "ds.namespace": "my_bucket", "ds.name": "my_object.csv", "direction": "out"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "s3", "ds.namespace": "my_bucket", "ds.name": "my_object.csv", "direction": "out"])), pointConsumer) then: decodedContext.isStarted() @@ -189,12 +192,12 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() timeSource.advance(MILLISECONDS.toNanos(2)) def decodedContext = DefaultPathwayContext.decode(timeSource, baseHash, null, encoded) timeSource.advance(MILLISECONDS.toNanos(25)) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) then: decodedContext.isStarted() @@ -216,7 +219,7 @@ class DefaultPathwayContextTest extends DDCoreSpecification { def context = new DefaultPathwayContext(timeSource, baseHash, null) def timeFromQueue = timeSource.getCurrentTimeMillis() - 200 when: - context.setCheckpoint(["type": "internal"], pointConsumer, timeFromQueue) + context.setCheckpoint(create(["type": "internal"], timeFromQueue, 0), pointConsumer) then: context.isStarted() pointConsumer.points.size() == 1 @@ -238,13 +241,13 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() timeSource.advance(MILLISECONDS.toNanos(1)) def decodedContext = DefaultPathwayContext.decode(timeSource, baseHash, null, encoded) timeSource.advance(MILLISECONDS.toNanos(25)) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) then: decodedContext.isStarted() @@ -263,7 +266,7 @@ class DefaultPathwayContextTest extends DDCoreSpecification { timeSource.advance(MILLISECONDS.toNanos(2)) def secondDecode = DefaultPathwayContext.decode(timeSource, baseHash, null, secondEncode) timeSource.advance(MILLISECONDS.toNanos(30)) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topicB", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topicB", "type": "kafka"])), pointConsumer) then: secondDecode.isStarted() @@ -287,14 +290,14 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() - Map carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] + Map carrier = [(PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] timeSource.advance(MILLISECONDS.toNanos(1)) def decodedContext = DefaultPathwayContext.extract(carrier, contextVisitor, timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(25)) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "kafka"])), pointConsumer) then: decodedContext.isStarted() @@ -310,11 +313,11 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: def secondEncode = decodedContext.encode() - carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): secondEncode] + carrier = [(PROPAGATION_KEY_BASE64): secondEncode] timeSource.advance(MILLISECONDS.toNanos(2)) def secondDecode = DefaultPathwayContext.extract(carrier, contextVisitor, timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(30)) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topicB", "type": "kafka"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topicB", "type": "kafka"])), pointConsumer) then: secondDecode.isStarted() @@ -338,14 +341,14 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() - Map carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] + Map carrier = [(PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] timeSource.advance(MILLISECONDS.toNanos(1)) def decodedContext = DefaultPathwayContext.extract(carrier, contextVisitor, timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(25)) - context.setCheckpoint(new LinkedHashMap<>(["topic": "topic", "type": "sqs"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["topic": "topic", "type": "sqs"])), pointConsumer) then: decodedContext.isStarted() @@ -361,11 +364,11 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: def secondEncode = decodedContext.encode() - carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): secondEncode] + carrier = [(PROPAGATION_KEY_BASE64): secondEncode] timeSource.advance(MILLISECONDS.toNanos(2)) def secondDecode = DefaultPathwayContext.extract(carrier, contextVisitor, timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(30)) - context.setCheckpoint(new LinkedHashMap<>(["topic": "topicB", "type": "sqs"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["topic": "topicB", "type": "sqs"])), pointConsumer) then: secondDecode.isStarted() @@ -387,11 +390,11 @@ class DefaultPathwayContextTest extends DDCoreSpecification { when: timeSource.advance(50) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) timeSource.advance(25) - context.setCheckpoint(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "type"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["group": "group", "topic": "topic", "type": "type"])), pointConsumer) timeSource.advance(25) - context.setCheckpoint(new LinkedHashMap<>(), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>()), pointConsumer) then: context.isStarted() @@ -446,16 +449,24 @@ class DefaultPathwayContextTest extends DDCoreSpecification { def context = new DefaultPathwayContext(timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() - Map carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] + Map carrier = [(PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] def contextVisitor = new Base64MapContextVisitor() + def spanContext = new ExtractedContext(DDTraceId.ONE, 1, 0, null, 0, null, null, null, null, localTraceConfig, DATADOG) + def baseContext = AgentSpan.fromSpanContext(spanContext).storeInto(root()) + def propagator = dataStreams.propagator() + when: - def extractor = new FakeExtractor() - extractor.traceConfig = localTraceConfig - def decorated = dataStreams.extractor(extractor) - def extracted = decorated.extract(carrier, contextVisitor) + def extractedContext = propagator.extract(baseContext, carrier, contextVisitor) + def extractedSpan = AgentSpan.fromContext(extractedContext) + + then: + extractedSpan != null + + when: + def extracted = extractedSpan.context() then: extracted != null @@ -492,24 +503,25 @@ class DefaultPathwayContextTest extends DDCoreSpecification { def context = new DefaultPathwayContext(timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() - Map carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] + Map carrier = [(PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] def contextVisitor = new Base64MapContextVisitor() - def extractor = new NullExtractor() - def decorated = dataStreams.extractor(extractor) + def propagator = dataStreams.propagator() when: - def extracted = decorated.extract(carrier, contextVisitor) + def extractedContext = propagator.extract(root(), carrier, contextVisitor) + def extractedSpan = AgentSpan.fromContext(extractedContext) then: - if (globalDsmEnabled) { + extractedSpan != null + def extracted = extractedSpan.context() extracted != null extracted.pathwayContext != null extracted.pathwayContext.isStarted() } else { - extracted == null + extractedSpan == null } where: @@ -533,15 +545,24 @@ class DefaultPathwayContextTest extends DDCoreSpecification { def context = new DefaultPathwayContext(timeSource, baseHash, null) timeSource.advance(MILLISECONDS.toNanos(50)) - context.setCheckpoint(new LinkedHashMap<>(["type": "internal"]), pointConsumer) + context.setCheckpoint(fromTags(new LinkedHashMap<>(["type": "internal"])), pointConsumer) def encoded = context.encode() - Map carrier = [(PathwayContext.PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] + Map carrier = [(PROPAGATION_KEY_BASE64): encoded, "someotherkey": "someothervalue"] def contextVisitor = new Base64MapContextVisitor() - def extractor = new FakeExtractor() - def decorated = dataStreams.extractor(extractor) + def spanContext = new ExtractedContext(DDTraceId.ONE, 1, 0, null, 0, null, null, null, null, null, DATADOG) + def baseContext = AgentSpan.fromSpanContext(spanContext).storeInto(root()) + def propagator = dataStreams.propagator() + + + when: + def extractedContext = propagator.extract(baseContext, carrier, contextVisitor) + def extractedSpan = AgentSpan.fromContext(extractedContext) + + then: + extractedSpan != null when: - def extracted = decorated.extract(carrier, contextVisitor) + def extracted = extractedSpan.context() then: extracted != null @@ -573,30 +594,14 @@ class DefaultPathwayContextTest extends DDCoreSpecification { Map carrier = ["someotherkey": "someothervalue"] def contextVisitor = new Base64MapContextVisitor() - def extractor = new NullExtractor() - def decorated = dataStreams.extractor(extractor) + def propagator = dataStreams.propagator() when: - def extracted = decorated.extract(carrier, contextVisitor) + def extractedContext = propagator.extract(root(), carrier, contextVisitor) + def extractedSpan = AgentSpan.fromContext(extractedContext) then: - extracted == null - } - - class FakeExtractor implements HttpCodec.Extractor { - TraceConfig traceConfig - - @Override - TagContext extract(C carrier, AgentPropagation.ContextVisitor getter) { - return new ExtractedContext(DDTraceId.ONE, 1, 0, null, 0, null, null, null, null, traceConfig, DATADOG) - } - } - - class NullExtractor implements HttpCodec.Extractor { - @Override - TagContext extract(C carrier, AgentPropagation.ContextVisitor getter) { - return null - } + extractedSpan == null } class Base64MapContextVisitor implements AgentPropagation.ContextVisitor> { diff --git a/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy b/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy index 56e4dfe1884..2bdceb91b0f 100644 --- a/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/opentracing/TypeConverterTest.groovy @@ -15,7 +15,6 @@ import datadog.trace.test.util.DDSpecification import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopScope import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpanContext -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopPathwayContext import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopSpan class TypeConverterTest extends DDSpecification { diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java b/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java index d1683696700..e6ddac36bac 100644 --- a/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/AgentDataStreamsMonitoring.java @@ -13,19 +13,9 @@ public interface AgentDataStreamsMonitoring extends DataStreamsCheckpointer { * Sets data streams checkpoint, used for both produce and consume operations. * * @param span active span - * @param sortedTags alphabetically sorted tags for the checkpoint (direction, queue type etc) - * @param defaultTimestamp unix timestamp to use as a start of the pathway if this is the first - * checkpoint in the chain. Zero should be passed if we can't extract the timestamp from the - * message / payload itself (for instance: produce operations; http produce / consume etc). - * Value will be ignored for checkpoints happening not at the start of the pipeline. - * @param payloadSizeBytes size of the message (body + headers) in bytes. Zero should be passed if - * the size cannot be evaluated. + * @param context the data streams context */ - void setCheckpoint( - AgentSpan span, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes); + void setCheckpoint(AgentSpan span, DataStreamsContext context); PathwayContext newPathwayContext(); diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java index 8cd0d6c33e0..ff9118df05d 100644 --- a/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/DataStreamsContext.java @@ -18,11 +18,29 @@ public static DataStreamsContext fromContext(Context context) { return context.get(CONTEXT_KEY); } + /** + * Creates a DSM context. + * + * @param sortedTags alphabetically sorted tags for the checkpoint (direction, queue type etc) + * @return the created context. + */ public static DataStreamsContext fromTags(LinkedHashMap sortedTags) { return new DataStreamsContext(sortedTags, 0, 0, true); } - public static DataStreamsContext fromKafka( + /** + * Creates a DSM context. + * + * @param sortedTags alphabetically sorted tags for the checkpoint (direction, queue type etc) + * @param defaultTimestamp unix timestamp to use as a start of the pathway if this is the first + * checkpoint in the chain. Zero should be passed if we can't extract the timestamp from the + * message / payload itself (for instance: produce operations; http produce / consume etc). + * Value will be ignored for checkpoints happening not at the start of the pipeline. + * @param payloadSizeBytes size of the message (body + headers) in bytes. Zero should be passed if + * the size cannot be evaluated. + * @return the created context. + */ + public static DataStreamsContext create( LinkedHashMap sortedTags, long defaultTimestamp, long payloadSizeBytes) { return new DataStreamsContext(sortedTags, defaultTimestamp, payloadSizeBytes, true); } diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java index 88737bad3b3..020b492639d 100644 --- a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopDataStreamsMonitoring.java @@ -13,11 +13,7 @@ public class NoopDataStreamsMonitoring implements AgentDataStreamsMonitoring { public void trackBacklog(LinkedHashMap sortedTags, long value) {} @Override - public void setCheckpoint( - AgentSpan span, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) {} + public void setCheckpoint(AgentSpan span, DataStreamsContext context) {} @Override public PathwayContext newPathwayContext() { diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java index 84ccaac93c9..08e28ac83b0 100644 --- a/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/NoopPathwayContext.java @@ -1,6 +1,5 @@ package datadog.trace.api.datastreams; -import java.util.LinkedHashMap; import java.util.function.Consumer; public class NoopPathwayContext implements PathwayContext { @@ -17,21 +16,7 @@ public long getHash() { } @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp, - long payloadSizeBytes) {} - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp) {} - - @Override - public void setCheckpoint( - LinkedHashMap sortedTags, Consumer pointConsumer) {} + public void setCheckpoint(DataStreamsContext context, Consumer pointConsumer) {} @Override public void saveStats(StatsPoint point) {} diff --git a/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java b/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java index da3c5bbca1e..f5a373e70ec 100644 --- a/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java +++ b/internal-api/src/main/java/datadog/trace/api/datastreams/PathwayContext.java @@ -1,7 +1,6 @@ package datadog.trace.api.datastreams; import java.io.IOException; -import java.util.LinkedHashMap; import java.util.function.Consumer; public interface PathwayContext { @@ -12,19 +11,7 @@ public interface PathwayContext { long getHash(); - void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp, - long payloadSizeBytes); - - void setCheckpoint( - LinkedHashMap sortedTags, - Consumer pointConsumer, - long defaultTimestamp); - - // The input tags should be sorted. - void setCheckpoint(LinkedHashMap sortedTags, Consumer pointConsumer); + void setCheckpoint(DataStreamsContext context, Consumer pointConsumer); void saveStats(StatsPoint point); diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java index 0fd8cbca94f..091c7465260 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java @@ -8,7 +8,6 @@ import datadog.context.propagation.CarrierVisitor; import datadog.context.propagation.Concern; import datadog.context.propagation.Propagators; -import java.util.LinkedHashMap; import java.util.function.BiConsumer; import javax.annotation.ParametersAreNonnullByDefault; @@ -20,21 +19,6 @@ public interface AgentPropagation { // TODO into the span context for now. Remove priority after the migration is complete. Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110); - // The input tags should be sorted. - void injectPathwayContext( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags); - - void injectPathwayContext( - AgentSpan span, - C carrier, - Setter setter, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes); - - void injectPathwayContextWithoutSendingStats( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags); - interface Setter extends CarrierSetter { void set(C carrier, String key, String value); } diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java index 7a3bcb636e4..9bac12ab235 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java @@ -21,7 +21,6 @@ import datadog.trace.context.TraceScope; import java.nio.ByteBuffer; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -595,23 +594,6 @@ public void updatePreferredServiceName(String serviceName) { static class NoopAgentPropagation implements AgentPropagation { static final NoopAgentPropagation INSTANCE = new NoopAgentPropagation(); - - @Override - public void injectPathwayContext( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags) {} - - @Override - public void injectPathwayContext( - AgentSpan span, - C carrier, - Setter setter, - LinkedHashMap sortedTags, - long defaultTimestamp, - long payloadSizeBytes) {} - - @Override - public void injectPathwayContextWithoutSendingStats( - AgentSpan span, C carrier, Setter setter, LinkedHashMap sortedTags) {} } public static class NoopAgentTraceCollector implements AgentTraceCollector { diff --git a/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy b/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy index 8d3240ff8b4..a565e0ed5e0 100644 --- a/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy +++ b/internal-api/src/test/groovy/datadog/trace/api/datastreams/DataStreamsContextTest.groovy @@ -29,7 +29,7 @@ class DataStreamsContextTest extends Specification { when: def timestamp = 123L def payloadSize = 456L - dsmContext = DataStreamsContext.fromKafka(tags, timestamp, payloadSize) + dsmContext = DataStreamsContext.create(tags, timestamp, payloadSize) then: dsmContext.sortedTags() == tags From dbe9364a0687d40ecb3915a215d69912a04f7061 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Tue, 4 Feb 2025 13:59:02 +0100 Subject: [PATCH 7/8] chore(dsm): Update CODEOWNERS --- .github/CODEOWNERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d8705f0796f..6933f81ded8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -63,3 +63,10 @@ dd-java-agent/instrumentation/spring-security-5/ @DataDog/asm-java # @DataDog/data-jobs-monitoring dd-java-agent/instrumentation/spark/ @DataDog/data-jobs-monitoring dd-java-agent/instrumentation/spark-executor/ @DataDog/data-jobs-monitoring + +# @DataDog/data-streams-monitoring +dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/datastreams @DataDog/data-streams-monitoring +dd-trace-core/src/main/java/datadog/trace/core/datastreams @DataDog/data-streams-monitoring +dd-trace-core/src/test/groovy/datadog/trace/core/datastreams @DataDog/data-streams-monitoring +internal-api/src/main/java/datadog/trace/api/datastreams @DataDog/data-streams-monitoring +internal-api/src/test/groovy/datadog/trace/api/datastreams @DataDog/data-streams-monitoring From 7f63446a1574e4aedd38724034ec900be22b3a92 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Wed, 12 Feb 2025 09:48:58 +0100 Subject: [PATCH 8/8] feat(core): Clean up old propagation API --- .../decorator/HttpServerDecorator.java | 3 ++- .../HeadersInjectAdapter.java | 4 ++-- .../rmi/ContextDispatcher.java | 5 ++-- .../instrumentation/rmi/ContextPayload.java | 4 ++-- .../rmi/ContextPropagator.java | 2 +- .../trace/civisibility/ProcessHierarchy.java | 5 ++-- .../buildsystem/BuildSystemModuleImpl.java | 6 ++--- .../propagation/AgentTextMapPropagator.java | 17 +++++++------ .../akkahttp/AkkaHttpClientHelpers.java | 4 ++-- .../akkahttp106/AkkaHttpClientHelpers.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../grpc/client/GrpcInjectAdapter.java | 4 ++-- .../grpc/server/TracingServerInterceptor.java | 4 ++-- .../v2/eventbridge/TextMapInjectAdapter.java | 4 ++-- .../aws/v2/s3/TextMapInjectAdapter.java | 4 ++-- .../aws/v0/AwsSdkClientDecorator.java | 4 ++-- .../aws/v2/AwsSdkClientDecorator.java | 4 ++-- .../aws/v1/sns/TextMapInjectAdapter.java | 4 ++-- .../aws/v2/sns/TextMapInjectAdapter.java | 4 ++-- .../aws/v1/sqs/MessageAttributeInjector.java | 5 ++-- .../aws/v1/sqs/TracingIterator.java | 6 +++-- .../aws/v2/sqs/MessageAttributeInjector.java | 7 +++--- .../aws/v2/sqs/TracingIterator.java | 6 +++-- .../axis2/TextMapInjectAdapter.java | 4 ++-- .../HttpHeadersInjectAdapter.java | 4 ++-- .../HeadersInjectAdapter.java | 4 ++-- .../googlepubsub/PubSubDecorator.java | 5 ++-- .../googlepubsub/TextMapInjectAdapter.java | 4 ++-- .../grizzly/client/InjectAdapter.java | 4 ++-- .../grpc/client/GrpcInjectAdapter.java | 4 ++-- .../grpc/server/TracingServerInterceptor.java | 4 ++-- .../httpclient/HttpHeadersInjectAdapter.java | 5 ++-- .../jaxrs/v1/InjectAdapter.java | 5 ++-- .../instrumentation/jaxrs/InjectAdapter.java | 5 ++-- .../jetty_client12/HeadersInjectAdapter.java | 4 ++-- .../jetty_client/HeadersInjectAdapter.java | 4 ++-- .../jms/DatadogMessageListener.java | 4 ++-- .../JMSMessageConsumerInstrumentation.java | 4 ++-- .../MDBMessageConsumerInstrumentation.java | 4 ++-- .../jms/MessageInjectAdapter.java | 4 ++-- .../TextMapInjectAdapterInterface.java | 4 ++-- .../kafka_clients/TracingIterator.java | 5 ++-- .../TextMapInjectAdapterInterface.java | 4 ++-- .../kafka_clients38/TracingIterator.java | 5 ++-- .../KafkaStreamTaskInstrumentation.java | 8 ++++--- .../ProcessorRecordContextSetter.java | 4 ++-- .../StampedRecordContextSetter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../client/NettyResponseInjectAdapter.java | 4 ++-- .../okhttp2/RequestBuilderInjectAdapter.java | 4 ++-- .../okhttp3/RequestBuilderInjectAdapter.java | 4 ++-- .../opentelemetry/OtelContextPropagators.java | 3 ++- .../opentracing31/OTTextMapSetter.java | 6 +++-- .../opentracing31/OTTracer.java | 6 ++--- .../opentracing32/OTTextMapInjectSetter.java | 6 +++-- .../opentracing32/OTTracer.java | 6 ++--- .../pekkohttp/PekkoHttpClientHelpers.java | 4 ++-- .../playws/HeadersInjectAdapter.java | 4 ++-- .../rabbitmq/amqp/RabbitDecorator.java | 6 +++-- .../rabbitmq/amqp/TextMapInjectAdapter.java | 4 ++-- .../servlet/ServletRequestSetter.java | 4 ++-- .../SpringMessageHandlerInstrumentation.java | 4 ++-- .../synapse3/TargetRequestInjectAdapter.java | 4 ++-- .../test/server/http/TestHttpServer.groovy | 8 +++---- .../core/propagation/InjectorBenchmark.java | 8 ++++--- .../java/datadog/trace/core/CoreTracer.java | 10 -------- .../trace/core/propagation/B3HttpCodec.java | 6 ++--- .../core/propagation/DatadogHttpCodec.java | 4 ++-- .../core/propagation/HaystackHttpCodec.java | 4 ++-- .../trace/core/propagation/HttpCodec.java | 6 ++--- .../trace/core/propagation/NoneCodec.java | 5 ++-- .../trace/core/propagation/W3CHttpCodec.java | 13 ++++------ .../trace/core/propagation/XRayHttpCodec.java | 4 ++-- .../datadog/trace/lambda/LambdaHandler.java | 17 +++++++------ .../trace/core/propagation/MapSetter.groovy | 7 ++++-- .../propagation/TracingPropagatorTest.groovy | 4 ++-- .../java/datadog/opentracing/DDTracer.java | 6 +++-- internal-api/build.gradle | 1 - .../instrumentation/api/AgentPropagation.java | 24 +++++++++---------- .../instrumentation/api/AgentTracer.java | 15 ------------ 83 files changed, 218 insertions(+), 229 deletions(-) diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java index ca2a241f9c1..29e33a3dd8c 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java @@ -3,6 +3,7 @@ import static datadog.trace.api.cache.RadixTreeCache.UNSET_STATUS; import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig; import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR; @@ -128,7 +129,7 @@ public AgentSpanContext.Extracted extract(REQUEST_CARRIER carrier) { if (null == carrier || null == getter) { return null; } - return tracer().propagate().extract(carrier, getter); + return extractContextAndGetSpanContext(carrier, getter); } /** Deprecated. Use {@link #startSpan(String, Object, AgentSpanContext.Extracted)} instead. */ diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java index d89d42faafb..fab72a63264 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.bootstrap.instrumentation.httpurlconnection; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.net.HttpURLConnection; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java index ea3feb30f63..8e869d31604 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextDispatcher.java @@ -1,6 +1,6 @@ package datadog.trace.bootstrap.instrumentation.rmi; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.rmi.ContextPropagator.DD_CONTEXT_CALL_ID; import static datadog.trace.bootstrap.instrumentation.rmi.ContextPropagator.PROPAGATOR; import static datadog.trace.bootstrap.instrumentation.rmi.ThreadLocalContext.THREAD_LOCAL_CONTEXT; @@ -43,7 +43,8 @@ public void dispatch(final Remote obj, final RemoteCall call) throws IOException final ContextPayload payload = ContextPayload.read(in); if (payload != null) { final AgentSpanContext context = - propagate().extract(payload.getContext(), ContextVisitors.stringValuesMap()); + extractContextAndGetSpanContext( + payload.getContext(), ContextVisitors.stringValuesMap()); THREAD_LOCAL_CONTEXT.set(context); } } diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java index a08aca5b9f5..8eb05fcb408 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java @@ -2,7 +2,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import java.io.IOException; import java.io.ObjectInput; @@ -56,7 +56,7 @@ public void write(final ObjectOutput out) throws IOException { } @ParametersAreNonnullByDefault - public static class InjectAdapter implements AgentPropagation.Setter { + public static class InjectAdapter implements CarrierSetter { @Override public void set(final ContextPayload carrier, final String key, final String value) { carrier.getContext().put(key, value); diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java index 6caafeff699..bd2add5f663 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPropagator.java @@ -62,7 +62,7 @@ private boolean checkIfContextCanBePassed( return result; } - /** @returns true when no error happened during call */ + /** @return {@code true} when no error happened during call */ private boolean syntheticCall( final Connection c, final ContextPayload payload, final int operationId) { final StreamRemoteCall shareContextCall = new StreamRemoteCall(c); diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java index 3c22585591d..7ba2837e4f9 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/ProcessHierarchy.java @@ -1,6 +1,6 @@ package datadog.trace.civisibility; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.trace.api.config.CiVisibilityConfig; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; @@ -33,7 +33,8 @@ public void forEachKey(Properties carrier, AgentPropagation.KeyClassifier classi ProcessHierarchy() { parentProcessModuleContext = - propagate().extract(System.getProperties(), SystemPropertiesPropagationGetter.INSTANCE); + extractContextAndGetSpanContext( + System.getProperties(), SystemPropertiesPropagationGetter.INSTANCE); } /** diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java index 9332e20b8f5..3754c6cee22 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java @@ -3,6 +3,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; import datadog.communication.ddagent.TracerVersion; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.civisibility.CIConstants; @@ -12,7 +13,6 @@ import datadog.trace.api.civisibility.domain.JavaAgent; import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector; import datadog.trace.api.config.CiVisibilityConfig; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.Tags; @@ -112,8 +112,8 @@ public BuildSystemModuleImpl( @ParametersAreNonnullByDefault private static final class ChildProcessPropertiesPropagationSetter - implements AgentPropagation.Setter> { - static final AgentPropagation.Setter> INSTANCE = + implements CarrierSetter> { + static final CarrierSetter> INSTANCE = new ChildProcessPropertiesPropagationSetter(); private ChildProcessPropertiesPropagationSetter() {} diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java index f571dd10f32..86b6bf7986f 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java @@ -3,6 +3,7 @@ import static datadog.context.propagation.Propagators.defaultPropagator; import static datadog.opentelemetry.shim.trace.OtelSpanContext.fromRemote; import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.opentelemetry.shim.context.OtelContext; import datadog.opentelemetry.shim.trace.OtelExtractedContext; @@ -11,7 +12,6 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext.Extracted; -import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.util.PropagationUtils; import io.opentelemetry.api.trace.Span; @@ -47,14 +47,13 @@ public Context extract(Context context, @Nullable C carrier, TextMapGetter { - for (String key : getter.keys(carrier1)) { - classifier.accept(key, getter.get(carrier1, key)); - } - }); + extractContextAndGetSpanContext( + carrier, + (carrier1, classifier) -> { + for (String key : getter.keys(carrier1)) { + classifier.accept(key, getter.get(carrier1, key)); + } + }); if (extracted == null) { return context; } else { diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java index 52fa1f31f04..1ce5ed19499 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java @@ -6,7 +6,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import akka.http.scaladsl.model.headers.CustomHeader; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import javax.annotation.ParametersAreNonnullByDefault; import scala.runtime.AbstractFunction1; @@ -33,7 +33,7 @@ public Void apply(final Try result) { } } - public static class AkkaHttpHeaders implements AgentPropagation.Setter { + public static class AkkaHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the AkkaHttpHeaders object was created? private final boolean hadSpan; diff --git a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java index b9e0fc65042..bfcf27da0f5 100644 --- a/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/AkkaHttpClientHelpers.java @@ -4,7 +4,7 @@ import akka.http.scaladsl.model.HttpRequest; import akka.http.scaladsl.model.HttpResponse; import akka.http.scaladsl.model.headers.CustomHeader; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import scala.runtime.AbstractFunction1; import scala.util.Try; @@ -30,7 +30,7 @@ public Void apply(final Try result) { } } - public static class AkkaHttpHeaders implements AgentPropagation.Setter { + public static class AkkaHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the AkkaHttpHeaders object was created? private boolean hadSpan; diff --git a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java index 8c9f111f13a..0bc97acaf98 100644 --- a/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpasyncclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.HttpRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java index 42f4866932d..d677fdc1bd4 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpclient-4/src/main/java/datadog/trace/instrumentation/apachehttpclient/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.http.client.methods.HttpUriRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java index 598526f990d..30f945432ef 100644 --- a/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/HttpHeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.apachehttpclient5; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.hc.core5.http.HttpRequest; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java index 332c5cf0f12..72799867c90 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.armeria.grpc.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.grpc.Metadata; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public final class GrpcInjectAdapter implements AgentPropagation.Setter { +public final class GrpcInjectAdapter implements CarrierSetter { public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); diff --git a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java index 5b22d0d927b..2e3026f9cad 100644 --- a/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/armeria-grpc/src/main/java/datadog/trace/instrumentation/armeria/grpc/server/TracingServerInterceptor.java @@ -2,8 +2,8 @@ import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.armeria.grpc.server.GrpcExtractAdapter.GETTER; import static datadog.trace.instrumentation.armeria.grpc.server.GrpcServerDecorator.DECORATE; @@ -62,7 +62,7 @@ public ServerCall.Listener interceptCall( return next.startCall(call, headers); } - AgentSpanContext spanContext = propagate().extract(headers, GETTER); + AgentSpanContext spanContext = extractContextAndGetSpanContext(headers, GETTER); AgentTracer.TracerAPI tracer = tracer(); spanContext = callIGCallbackRequestStarted(tracer, spanContext); diff --git a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java index ff7f760b933..f89f0a28f75 100644 --- a/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/eventbridge/TextMapInjectAdapter.java @@ -1,10 +1,10 @@ package datadog.trace.instrumentation.aws.v2.eventbridge; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java index e3ccf485543..cfefe319de3 100644 --- a/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v2.s3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java index 59b2c306f93..d49c8c99777 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java @@ -9,12 +9,12 @@ import com.amazonaws.Request; import com.amazonaws.Response; import com.amazonaws.http.HttpMethodName; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.cache.DDCache; import datadog.trace.api.cache.DDCaches; import datadog.trace.api.naming.SpanNaming; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; @@ -32,7 +32,7 @@ import javax.annotation.ParametersAreNonnullByDefault; public class AwsSdkClientDecorator extends HttpClientDecorator - implements AgentPropagation.Setter> { + implements CarrierSetter> { private static final String AWS = "aws"; diff --git a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java index 3e9912a3dae..a495b577618 100644 --- a/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java +++ b/dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java @@ -7,6 +7,7 @@ import static datadog.trace.core.datastreams.TagsProcessor.TOPIC_TAG; import static datadog.trace.core.datastreams.TagsProcessor.TYPE_TAG; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.ConfigDefaults; import datadog.trace.api.DDTags; @@ -16,7 +17,6 @@ import datadog.trace.api.datastreams.PathwayContext; import datadog.trace.api.naming.SpanNaming; import datadog.trace.bootstrap.InstanceStore; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentTracer; import datadog.trace.bootstrap.instrumentation.api.InstrumentationTags; @@ -52,7 +52,7 @@ import software.amazon.awssdk.http.SdkHttpResponse; public class AwsSdkClientDecorator extends HttpClientDecorator - implements AgentPropagation.Setter { + implements CarrierSetter { public static final AwsSdkClientDecorator DECORATE = new AwsSdkClientDecorator(); private static final DDCache CACHE = DDCaches.newFixedSizeCache(128); // cloud services can have high cardinality diff --git a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java index 6ec5a9dd5ab..27e19045655 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-sns-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sns/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v1.sns; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java index 57b6cd93b84..bbe542be905 100644 --- a/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/aws-java-sns-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sns/TextMapInjectAdapter.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.aws.v2.sns; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java index a522c961c34..02a81e8278e 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/MessageAttributeInjector.java @@ -3,11 +3,10 @@ import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; import com.amazonaws.services.sqs.model.MessageAttributeValue; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; -public class MessageAttributeInjector - implements AgentPropagation.Setter> { +public class MessageAttributeInjector implements CarrierSetter> { public static final MessageAttributeInjector SETTER = new MessageAttributeInjector(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java index 0cd6f6cbcdf..8eb154800c9 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.aws.v1.sqs; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; @@ -65,7 +65,9 @@ protected void startNewMessageSpan(Message message) { if (batchContext == null) { // first grab any incoming distributed context AgentSpanContext spanContext = - Config.get().isSqsPropagationEnabled() ? propagate().extract(message, GETTER) : null; + Config.get().isSqsPropagationEnabled() + ? extractContextAndGetSpanContext(message, GETTER) + : null; // next add a time-in-queue span for non-legacy SQS traces if (TIME_IN_QUEUE_ENABLED) { long timeInQueueStart = GETTER.extractTimeInQueueStart(message); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java index d92de8bebf4..e39e3ac42db 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/MessageAttributeInjector.java @@ -2,12 +2,13 @@ import static datadog.trace.api.datastreams.PathwayContext.DATADOG_KEY; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; +import javax.annotation.ParametersAreNonnullByDefault; import software.amazon.awssdk.services.sqs.model.MessageAttributeValue; -public class MessageAttributeInjector - implements AgentPropagation.Setter> { +@ParametersAreNonnullByDefault +public class MessageAttributeInjector implements CarrierSetter> { public static final MessageAttributeInjector SETTER = new MessageAttributeInjector(); diff --git a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java index 503d5efa5b2..2213ac64d6e 100644 --- a/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java +++ b/dd-java-agent/instrumentation/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.aws.v2.sqs; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; @@ -67,7 +67,9 @@ protected void startNewMessageSpan(Message message) { if (batchContext == null) { // first grab any incoming distributed context AgentSpanContext spanContext = - Config.get().isSqsPropagationEnabled() ? propagate().extract(message, GETTER) : null; + Config.get().isSqsPropagationEnabled() + ? extractContextAndGetSpanContext(message, GETTER) + : null; // next add a time-in-queue span for non-legacy SQS traces if (TIME_IN_QUEUE_ENABLED) { long timeInQueueStart = GETTER.extractTimeInQueueStart(message); diff --git a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java index 40682fb0696..fe4f2311bdc 100644 --- a/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/axis-2/src/main/java/datadog/trace/instrumentation/axis2/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.axis2; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter> { +public class TextMapInjectAdapter implements CarrierSetter> { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java index 5e24cd98fba..f35bb0eb8af 100644 --- a/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/commons-httpclient-2/src/main/java/datadog/trace/instrumentation/commonshttpclient/HttpHeadersInjectAdapter.java @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.commonshttpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpMethod; @ParametersAreNonnullByDefault -public class HttpHeadersInjectAdapter implements AgentPropagation.Setter { +public class HttpHeadersInjectAdapter implements CarrierSetter { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java index c65da9c0cbc..a9a162d576a 100644 --- a/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/google-http-client/src/main/java/datadog/trace/instrumentation/googlehttpclient/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.googlehttpclient; import com.google.api.client.http.HttpRequest; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java index f966ca8b3c1..3e61cd28753 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/PubSubDecorator.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.googlepubsub; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -129,7 +129,8 @@ protected String spanKind() { } public AgentSpan onConsume(final PubsubMessage message, final String subscription) { - final AgentSpanContext spanContext = propagate().extract(message, TextMapExtractAdapter.GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(message, TextMapExtractAdapter.GETTER); final AgentSpan span = startSpan(PUBSUB_CONSUME, spanContext); final CharSequence parsedSubscription = extractSubscription(subscription); final LinkedHashMap sortedTags = new LinkedHashMap<>(3); diff --git a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java index 46245ce4b04..c1c39bc4e77 100644 --- a/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/google-pubsub/src/main/java/datadog/trace/instrumentation/googlepubsub/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.googlepubsub; import com.google.pubsub.v1.PubsubMessage; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter { +public class TextMapInjectAdapter implements CarrierSetter { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java index 946d4b4d4e3..44f71cf95a2 100644 --- a/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java +++ b/dd-java-agent/instrumentation/grizzly-client-1.9/src/main/java/datadog/trace/instrumentation/grizzly/client/InjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.grizzly.client; import com.ning.http.client.Request; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class InjectAdapter implements AgentPropagation.Setter { +public class InjectAdapter implements CarrierSetter { public static final InjectAdapter SETTER = new InjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java index 70cd03568f4..392e5647398 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.grpc.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.grpc.Metadata; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public final class GrpcInjectAdapter implements AgentPropagation.Setter { +public final class GrpcInjectAdapter implements CarrierSetter { public static final GrpcInjectAdapter SETTER = new GrpcInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java index 954d7458231..5be9e13a5a3 100644 --- a/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java +++ b/dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/server/TracingServerInterceptor.java @@ -2,8 +2,8 @@ import static datadog.trace.api.datastreams.DataStreamsContext.fromTags; import static datadog.trace.api.gateway.Events.EVENTS; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.grpc.server.GrpcExtractAdapter.GETTER; import static datadog.trace.instrumentation.grpc.server.GrpcServerDecorator.DECORATE; @@ -62,7 +62,7 @@ public ServerCall.Listener interceptCall( return next.startCall(call, headers); } - AgentSpanContext spanContext = propagate().extract(headers, GETTER); + AgentSpanContext spanContext = extractContextAndGetSpanContext(headers, GETTER); AgentTracer.TracerAPI tracer = tracer(); spanContext = callIGCallbackRequestStarted(tracer, spanContext); diff --git a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java index 482f51554ab..c9e95ca76c5 100644 --- a/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/java-http-client/src/main/java11/datadog/trace/instrumentation/httpclient/HttpHeadersInjectAdapter.java @@ -1,13 +1,12 @@ package datadog.trace.instrumentation.httpclient; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.function.BiPredicate; -public class HttpHeadersInjectAdapter - implements AgentPropagation.Setter>> { +public class HttpHeadersInjectAdapter implements CarrierSetter>> { public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter(); public static final BiPredicate KEEP = HttpHeadersInjectAdapter::keep; diff --git a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java index 692f4653bca..ed476a83fc2 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java +++ b/dd-java-agent/instrumentation/jax-rs-client-1.1/src/main/java/datadog/trace/instrumentation/jaxrs/v1/InjectAdapter.java @@ -1,12 +1,11 @@ package datadog.trace.instrumentation.jaxrs.v1; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; @ParametersAreNonnullByDefault -public final class InjectAdapter - implements AgentPropagation.Setter> { +public final class InjectAdapter implements CarrierSetter> { public static final InjectAdapter SETTER = new InjectAdapter(); diff --git a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java index dc555d8acc8..24e3f6a12b4 100644 --- a/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java +++ b/dd-java-agent/instrumentation/jax-rs-client-2.0/src/main/java/datadog/trace/instrumentation/jaxrs/InjectAdapter.java @@ -1,12 +1,11 @@ package datadog.trace.instrumentation.jaxrs; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.ws.rs.core.MultivaluedMap; @ParametersAreNonnullByDefault -public final class InjectAdapter - implements AgentPropagation.Setter> { +public final class InjectAdapter implements CarrierSetter> { public static final InjectAdapter SETTER = new InjectAdapter(); diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java index 94a16ded1bb..1869f7da4de 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-12.0/src/main/java17/datadog/trace/instrumentation/jetty_client12/HeadersInjectAdapter.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.jetty_client12; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.eclipse.jetty.client.Request; -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java index d4bc2cf0b78..efad6db8fc6 100644 --- a/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/jetty-client/jetty-client-common/src/main/java/datadog/trace/instrumentation/jetty_client/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.jetty_client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.eclipse.jetty.client.api.Request; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java index 6951b3707e1..b58034f3d88 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/DatadogMessageListener.java @@ -1,7 +1,7 @@ package datadog.trace.instrumentation.jms; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.BROKER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; @@ -40,7 +40,7 @@ public void onMessage(Message message) { AgentSpan span; AgentSpanContext propagatedContext = null; if (!consumerState.isPropagationDisabled()) { - propagatedContext = propagate().extract(message, GETTER); + propagatedContext = extractContextAndGetSpanContext(message, GETTER); } long startMillis = GETTER.extractTimeInQueueStart(message); if (startMillis == 0 || !TIME_IN_QUEUE_ENABLED) { diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java index 105c325f638..446dc32897f 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java @@ -3,9 +3,9 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.hasInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.BROKER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; @@ -120,7 +120,7 @@ public static void afterReceive( AgentSpan span; AgentSpanContext propagatedContext = null; if (!consumerState.isPropagationDisabled()) { - propagatedContext = propagate().extract(message, GETTER); + propagatedContext = extractContextAndGetSpanContext(message, GETTER); } long startMillis = GETTER.extractTimeInQueueStart(message); if (startMillis == 0 || !TIME_IN_QUEUE_ENABLED) { diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java index 20db57e3132..6f2cb2c16e1 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java @@ -4,8 +4,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.hasSuperType; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.jms.JMSDecorator.CONSUMER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_CONSUME; @@ -67,7 +67,7 @@ public static AgentScope methodEnter(@Advice.Argument(0) final Message message) if (CallDepthThreadLocalMap.incrementCallDepth(MessageListener.class) > 0) { return null; } - AgentSpanContext propagatedContext = propagate().extract(message, GETTER); + AgentSpanContext propagatedContext = extractContextAndGetSpanContext(message, GETTER); AgentSpan span = startSpan(JMS_CONSUME, propagatedContext); CONSUMER_DECORATE.afterStart(span); CharSequence consumerResourceName; diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java index d63cc4d6a6a..7d2e558fc79 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInjectAdapter.java @@ -3,7 +3,7 @@ import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_BATCH_ID_KEY; import static datadog.trace.instrumentation.jms.JMSDecorator.JMS_PRODUCED_KEY; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.jms.MessageBatchState; import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; import de.thetaphi.forbiddenapis.SuppressForbidden; @@ -12,7 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class MessageInjectAdapter implements AgentPropagation.Setter { +public class MessageInjectAdapter implements CarrierSetter { private static final Logger log = LoggerFactory.getLogger(MessageInjectAdapter.class); public static final MessageInjectAdapter SETTER = new MessageInjectAdapter(); diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java index 516ca4b7100..466be384c52 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TextMapInjectAdapterInterface.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.kafka_clients; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; -public interface TextMapInjectAdapterInterface extends AgentPropagation.Setter { +public interface TextMapInjectAdapterInterface extends CarrierSetter { void injectTimeInQueue(Headers headers); } diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java index 610ad20a2ca..3c6f26995a3 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/TracingIterator.java @@ -2,9 +2,9 @@ import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -84,7 +84,8 @@ protected void startNewRecordSpan(ConsumerRecord val) { AgentSpan span, queueSpan = null; if (val != null) { if (!Config.get().isKafkaClientPropagationDisabledForTopic(val.topic())) { - final AgentSpanContext spanContext = propagate().extract(val.headers(), GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(val.headers(), GETTER); long timeInQueueStart = GETTER.extractTimeInQueueStart(val.headers()); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(operationName, spanContext); diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java index 2dcb7c72146..869613c656b 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TextMapInjectAdapterInterface.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.kafka_clients38; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; -public interface TextMapInjectAdapterInterface extends AgentPropagation.Setter { +public interface TextMapInjectAdapterInterface extends CarrierSetter { void injectTimeInQueue(Headers headers); } diff --git a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java index 1c127778141..9a922d46ad0 100644 --- a/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java +++ b/dd-java-agent/instrumentation/kafka-clients-3.8/src/main/java17/datadog/trace/instrumentation/kafka_clients38/TracingIterator.java @@ -2,9 +2,9 @@ import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -81,7 +81,8 @@ protected void startNewRecordSpan(ConsumerRecord val) { AgentSpan span, queueSpan = null; if (val != null) { if (!Config.get().isKafkaClientPropagationDisabledForTopic(val.topic())) { - final AgentSpanContext spanContext = propagate().extract(val.headers(), GETTER); + final AgentSpanContext spanContext = + extractContextAndGetSpanContext(val.headers(), GETTER); long timeInQueueStart = GETTER.extractTimeInQueueStart(val.headers()); if (timeInQueueStart == 0 || !KafkaDecorator.TIME_IN_QUEUE_ENABLED) { span = startSpan(operationName, spanContext); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java index 33d62f4cdb2..10d15eb8486 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/KafkaStreamTaskInstrumentation.java @@ -3,8 +3,8 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.api.datastreams.DataStreamsContext.create; import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN; import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG; @@ -234,7 +234,8 @@ public static void start( StreamTaskContext streamTaskContext = InstrumentationContext.get(StreamTask.class, StreamTaskContext.class).get(task); if (!Config.get().isKafkaClientPropagationDisabledForTopic(record.topic())) { - final AgentSpanContext extractedContext = propagate().extract(record, SR_GETTER); + final AgentSpanContext extractedContext = + extractContextAndGetSpanContext(record, SR_GETTER); long timeInQueueStart = SR_GETTER.extractTimeInQueueStart(record); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(KAFKA_CONSUME, extractedContext); @@ -309,7 +310,8 @@ public static void start( StreamTaskContext streamTaskContext = InstrumentationContext.get(StreamTask.class, StreamTaskContext.class).get(task); if (!Config.get().isKafkaClientPropagationDisabledForTopic(record.topic())) { - final AgentSpanContext extractedContext = propagate().extract(record, PR_GETTER); + final AgentSpanContext extractedContext = + extractContextAndGetSpanContext(record, PR_GETTER); long timeInQueueStart = PR_GETTER.extractTimeInQueueStart(record); if (timeInQueueStart == 0 || !TIME_IN_QUEUE_ENABLED) { span = startSpan(KAFKA_CONSUME, extractedContext); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java index a934c4b2a49..a444871f409 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/ProcessorRecordContextSetter.java @@ -3,13 +3,13 @@ import static datadog.trace.instrumentation.kafka_streams.ProcessorRecordContextHeadersAccess.HEADERS_METHOD; import static java.nio.charset.StandardCharsets.UTF_8; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation.Setter; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; import org.apache.kafka.streams.processor.internals.ProcessorRecordContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ProcessorRecordContextSetter implements Setter { +public class ProcessorRecordContextSetter implements CarrierSetter { private static final Logger log = LoggerFactory.getLogger(ProcessorRecordContextSetter.class); public static final ProcessorRecordContextSetter PR_SETTER = new ProcessorRecordContextSetter(); diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java index 1a2f5bf642b..88d88cbb959 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/main/java/datadog/trace/instrumentation/kafka_streams/StampedRecordContextSetter.java @@ -2,11 +2,11 @@ import static java.nio.charset.StandardCharsets.UTF_8; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation.Setter; +import datadog.context.propagation.CarrierSetter; import org.apache.kafka.common.header.Headers; import org.apache.kafka.streams.processor.internals.StampedRecord; -public class StampedRecordContextSetter implements Setter { +public class StampedRecordContextSetter implements CarrierSetter { public static final StampedRecordContextSetter SR_SETTER = new StampedRecordContextSetter(); @Override diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java index 11974e69656..b29aaae39eb 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty38.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.jboss.netty.handler.codec.http.HttpHeaders; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java index e279e489055..5f23ca3d4b5 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty40.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.netty.handler.codec.http.HttpHeaders; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java index 37c0b3b90b2..e8c9b1e24fd 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/client/NettyResponseInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.netty41.client; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.netty.handler.codec.http.HttpHeaders; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class NettyResponseInjectAdapter implements AgentPropagation.Setter { +public class NettyResponseInjectAdapter implements CarrierSetter { public static final NettyResponseInjectAdapter SETTER = new NettyResponseInjectAdapter(); diff --git a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java index f563715ca4b..be6b7d5591d 100644 --- a/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java +++ b/dd-java-agent/instrumentation/okhttp-2/src/main/java/datadog/trace/instrumentation/okhttp2/RequestBuilderInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.okhttp2; import com.squareup.okhttp.Request; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { +public class RequestBuilderInjectAdapter implements CarrierSetter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); @Override diff --git a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java index 8677f8a3e23..d8acd7d44dd 100644 --- a/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java +++ b/dd-java-agent/instrumentation/okhttp-3/src/main/java/datadog/trace/instrumentation/okhttp3/RequestBuilderInjectAdapter.java @@ -1,6 +1,6 @@ package datadog.trace.instrumentation.okhttp3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import okhttp3.Request; @@ -10,7 +10,7 @@ * @author Pavol Loffay */ @ParametersAreNonnullByDefault -public class RequestBuilderInjectAdapter implements AgentPropagation.Setter { +public class RequestBuilderInjectAdapter implements CarrierSetter { public static final RequestBuilderInjectAdapter SETTER = new RequestBuilderInjectAdapter(); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java index 0c8936f7a19..ad6042d0f0e 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelContextPropagators.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentelemetry; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -51,7 +52,7 @@ public void inject(final Context context, final C carrier, final Setter s @Override public Context extract(final Context context, final C carrier, final Getter getter) { final AgentSpanContext agentContext = - tracer.propagate().extract(carrier, new OtelGetter<>(getter)); + extractContextAndGetSpanContext(carrier, new OtelGetter<>(getter)); return TracingContextUtils.withSpan( DefaultSpan.create(converter.toSpanContext(agentContext)), context); } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java index 503472d56da..99122724ab6 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTextMapSetter.java @@ -1,9 +1,11 @@ package datadog.trace.instrumentation.opentracing31; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.opentracing.propagation.TextMap; +import javax.annotation.ParametersAreNonnullByDefault; -class OTTextMapSetter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +class OTTextMapSetter implements CarrierSetter { static final OTTextMapSetter INSTANCE = new OTTextMapSetter(); @Override diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java index 6cc2828e66d..5997127b619 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentracing31; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -63,9 +64,8 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext tagContext = - tracer - .propagate() - .extract((TextMap) carrier, ContextVisitors.stringValuesEntrySet()); + extractContextAndGetSpanContext( + (TextMap) carrier, ContextVisitors.stringValuesEntrySet()); return converter.toSpanContext(tagContext); } else { diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java index 389c6e1b2e4..74040c1a10b 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTextMapInjectSetter.java @@ -1,9 +1,11 @@ package datadog.trace.instrumentation.opentracing32; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import io.opentracing.propagation.TextMapInject; +import javax.annotation.ParametersAreNonnullByDefault; -class OTTextMapInjectSetter implements AgentPropagation.Setter { +@ParametersAreNonnullByDefault +class OTTextMapInjectSetter implements CarrierSetter { static final OTTextMapInjectSetter INSTANCE = new OTTextMapInjectSetter(); @Override diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java index dfd3703d049..acb4b8c5e67 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java @@ -1,6 +1,7 @@ package datadog.trace.instrumentation.opentracing32; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -75,9 +76,8 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMapExtract) { final AgentSpanContext tagContext = - tracer - .propagate() - .extract((TextMapExtract) carrier, ContextVisitors.stringValuesEntrySet()); + extractContextAndGetSpanContext( + (TextMapExtract) carrier, ContextVisitors.stringValuesEntrySet()); return converter.toSpanContext(tagContext); } else { diff --git a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java index 54412feb6b7..bbef0b767a9 100644 --- a/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java +++ b/dd-java-agent/instrumentation/pekko-http-1.0/src/main/java/datadog/trace/instrumentation/pekkohttp/PekkoHttpClientHelpers.java @@ -2,7 +2,7 @@ import static datadog.trace.instrumentation.pekkohttp.PekkoHttpClientDecorator.DECORATE; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.pekko.http.javadsl.model.headers.RawHeader; @@ -33,7 +33,7 @@ public Void apply(final Try result) { } } - public static class PekkoHttpHeaders implements AgentPropagation.Setter { + public static class PekkoHttpHeaders implements CarrierSetter { private HttpRequest request; // Did this request have a span when the PekkoHttpHeaders object was created? private final boolean hadSpan; diff --git a/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java b/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java index 2034b320641..0856a970f4b 100644 --- a/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java +++ b/dd-java-agent/instrumentation/play-ws/src/main/java/datadog/trace/instrumentation/playws/HeadersInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.playws; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import play.shaded.ahc.org.asynchttpclient.Request; @ParametersAreNonnullByDefault -public class HeadersInjectAdapter implements AgentPropagation.Setter { +public class HeadersInjectAdapter implements CarrierSetter { public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter(); diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java index baf0985199c..c3d1797c4fc 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/RabbitDecorator.java @@ -1,8 +1,8 @@ package datadog.trace.instrumentation.rabbitmq.amqp; import static datadog.trace.api.datastreams.DataStreamsContext.create; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_COMMAND; import static datadog.trace.bootstrap.instrumentation.api.InstrumentationTags.AMQP_EXCHANGE; @@ -206,7 +206,9 @@ public static AgentScope startReceivingSpan( final Map headers = propagate && null != properties ? properties.getHeaders() : null; AgentSpanContext parentContext = - null != headers ? propagate().extract(headers, ContextVisitors.objectValuesMap()) : null; + null != headers + ? extractContextAndGetSpanContext(headers, ContextVisitors.objectValuesMap()) + : null; // TODO: check dynamically bound queues - // https://github.com/DataDog/dd-trace-java/pull/2955#discussion_r677787875 diff --git a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java index 7b68605f1f4..88b8df498fa 100644 --- a/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java +++ b/dd-java-agent/instrumentation/rabbitmq-amqp-2.7/src/main/java/datadog/trace/instrumentation/rabbitmq/amqp/TextMapInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.rabbitmq.amqp; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import java.util.Map; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault -public class TextMapInjectAdapter implements AgentPropagation.Setter> { +public class TextMapInjectAdapter implements CarrierSetter> { public static final TextMapInjectAdapter SETTER = new TextMapInjectAdapter(); diff --git a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java index e16c7b0fa89..9a18009c6e9 100644 --- a/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java +++ b/dd-java-agent/instrumentation/servlet/src/main/java/datadog/trace/instrumentation/servlet/ServletRequestSetter.java @@ -1,12 +1,12 @@ package datadog.trace.instrumentation.servlet; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import javax.servlet.ServletRequest; /** Inject into request attributes since the request headers can't be modified. */ @ParametersAreNonnullByDefault -public class ServletRequestSetter implements AgentPropagation.Setter { +public class ServletRequestSetter implements CarrierSetter { public static final ServletRequestSetter SETTER = new ServletRequestSetter(); @Override diff --git a/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java b/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java index 4f0c6c2a153..edc4bcfe589 100644 --- a/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/spring-messaging-4/src/main/java/datadog/trace/instrumentation/springmessaging/SpringMessageHandlerInstrumentation.java @@ -1,9 +1,9 @@ package datadog.trace.instrumentation.springmessaging; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.springmessaging.SpringMessageDecorator.DECORATE; import static datadog.trace.instrumentation.springmessaging.SpringMessageDecorator.SPRING_INBOUND; @@ -64,7 +64,7 @@ public static AgentScope onEnter( parentContext = parent.context(); } else { // otherwise try to re-extract the message context to avoid disconnected trace - parentContext = propagate().extract(message, GETTER); + parentContext = extractContextAndGetSpanContext(message, GETTER); } AgentSpan span = startSpan(SPRING_INBOUND, parentContext); DECORATE.afterStart(span); diff --git a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java index f5345ad836d..f418f546200 100644 --- a/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java +++ b/dd-java-agent/instrumentation/synapse-3/src/main/java/datadog/trace/instrumentation/synapse3/TargetRequestInjectAdapter.java @@ -1,11 +1,11 @@ package datadog.trace.instrumentation.synapse3; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; +import datadog.context.propagation.CarrierSetter; import javax.annotation.ParametersAreNonnullByDefault; import org.apache.synapse.transport.passthru.TargetRequest; @ParametersAreNonnullByDefault -public final class TargetRequestInjectAdapter implements AgentPropagation.Setter { +public final class TargetRequestInjectAdapter implements CarrierSetter { public static final TargetRequestInjectAdapter SETTER = new TargetRequestInjectAdapter(); @Override diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy index e74ded29fe4..dcb0d6a2292 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/server/http/TestHttpServer.groovy @@ -34,7 +34,7 @@ import java.util.concurrent.TimeoutException import java.util.concurrent.atomic.AtomicReference import static datadog.trace.agent.test.server.http.HttpServletRequestExtractAdapter.GETTER -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan import static org.eclipse.jetty.http.HttpMethod.CONNECT import static org.eclipse.jetty.http.HttpMethod.GET @@ -379,13 +379,13 @@ class TestHttpServer implements AutoCloseable { isDDServer = Boolean.parseBoolean(request.getHeader("is-dd-server")) } if (isDDServer) { - final AgentSpanContext extractedContext = propagate().extract(req.orig, GETTER) + final AgentSpanContext extractedContext = extractContextAndGetSpanContext(req.orig, GETTER) if (extractedContext != null) { - startSpan("test-http-server", extractedContext) + startSpan("test", "test-http-server", extractedContext) .setTag("path", request.path) .setTag(Tags.SPAN_KIND, Tags.SPAN_KIND_SERVER).finish() } else { - startSpan("test-http-server") + startSpan("test", "test-http-server") .setTag("path", request.path) .setTag(Tags.SPAN_KIND, Tags.SPAN_KIND_SERVER).finish() } diff --git a/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java b/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java index f1658e0c11c..1c070167377 100644 --- a/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java +++ b/dd-trace-core/src/jmh/java/datadog/trace/core/propagation/InjectorBenchmark.java @@ -3,6 +3,7 @@ import static java.util.concurrent.TimeUnit.MICROSECONDS; import static java.util.concurrent.TimeUnit.SECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTraceId; @@ -16,6 +17,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import javax.annotation.ParametersAreNonnullByDefault; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -158,11 +160,11 @@ public void forEachKey(T carrier, AgentPropagation.KeyClassifier classifier) { } } - private static final AgentPropagation.Setter> MAP_SETTER = - new MapContextSetter<>(); + private static final CarrierSetter> MAP_SETTER = new MapContextSetter<>(); + @ParametersAreNonnullByDefault private static final class MapContextSetter> - implements AgentPropagation.Setter { + implements CarrierSetter { @Override public void set(T carrier, String key, String value) { carrier.put(key, value); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 2e6d016276a..ebb9b4f0fb8 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -54,7 +54,6 @@ import datadog.trace.api.time.SystemTimeSource; import datadog.trace.api.time.TimeSource; import datadog.trace.bootstrap.instrumentation.api.AgentHistogram; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; @@ -227,7 +226,6 @@ public static CoreTracerBuilder builder() { private final SortedSet interceptors = new ConcurrentSkipListSet<>(Comparator.comparingInt(TraceInterceptor::priority)); - private final AgentPropagation propagation; private final boolean logs128bTraceIdEnabled; private final InstrumentationGateway instrumentationGateway; @@ -713,9 +711,6 @@ private CoreTracer( sharedCommunicationObjects.whenReady(this.dataStreamsMonitoring::start); - // TODO Need to be removed - this.propagation = AgentTracer.NOOP_TRACER.propagate(); - // Register context propagators HttpCodec.Extractor tracingExtractor = extractor == null ? HttpCodec.createExtractor(config, this::captureTraceConfig) : extractor; @@ -975,11 +970,6 @@ public AgentScope activeScope() { return scopeManager.active(); } - @Override - public AgentPropagation propagate() { - return this.propagation; - } - @Override public AgentSpanContext notifyExtensionStart(Object event) { return LambdaHandler.notifyStartInvocation(this, event); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java index e39f0745851..910449b7dd1 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/B3HttpCodec.java @@ -4,6 +4,7 @@ import static datadog.trace.api.TracePropagationStyle.B3SINGLE; import static datadog.trace.core.propagation.HttpCodec.firstHeaderValue; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -11,7 +12,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.ArrayList; import java.util.Arrays; @@ -112,7 +112,7 @@ public B3MultiInjector(boolean paddingEnabled) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { final String injectedTraceId = getInjectedTraceId(context); final String injectedSpanId = getInjectedSpanId(context); setter.set(carrier, TRACE_ID_KEY, injectedTraceId); @@ -137,7 +137,7 @@ public B3SingleInjector(boolean paddingEnabled) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { final String injectedTraceId = getInjectedTraceId(context); final String injectedSpanId = getInjectedSpanId(context); final StringBuilder injectedB3IdBuilder = new StringBuilder(100); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java index 9624a54a50a..6723dfdbc8c 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/DatadogHttpCodec.java @@ -7,6 +7,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -14,7 +15,6 @@ import datadog.trace.api.DDTraceId; import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.core.DDSpanContext; import datadog.trace.core.propagation.PropagationTags.HeaderType; @@ -55,7 +55,7 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { setter.set(carrier, TRACE_ID_KEY, context.getTraceId().toString()); setter.set(carrier, SPAN_ID_KEY, DDSpanId.toString(context.getSpanId())); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java index 0d349a4a858..f7b8b04a0b9 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HaystackHttpCodec.java @@ -3,6 +3,7 @@ import static datadog.trace.api.TracePropagationStyle.HAYSTACK; import static datadog.trace.core.propagation.HttpCodec.firstHeaderValue; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD64bTraceId; import datadog.trace.api.DDSpanId; @@ -10,7 +11,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import de.thetaphi.forbiddenapis.SuppressForbidden; import java.util.Map; @@ -63,7 +63,7 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { try { // Given that Haystack uses a 128-bit UUID/GUID for all ID representations, need to convert // from 64-bit BigInteger diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java index 120d14f7ee5..f1e65298d24 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/HttpCodec.java @@ -4,6 +4,7 @@ import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT; import static datadog.trace.core.propagation.DatadogHttpCodec.SPAN_ID_KEY; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DD64bTraceId; @@ -51,8 +52,7 @@ public class HttpCodec { static final String CF_CONNECTING_IP_V6_KEY = "cf-connecting-ipv6"; public interface Injector { - void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter); + void inject(final DDSpanContext context, final C carrier, final CarrierSetter setter); } /** This interface defines propagated context extractor. */ @@ -184,7 +184,7 @@ public CompoundInjector(final List injectors) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { log.debug("Inject context {}", context); for (final Injector injector : injectors) { injector.inject(context, carrier, setter); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java index e9be9f7a257..5d6924ea69e 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/NoneCodec.java @@ -1,9 +1,9 @@ package datadog.trace.core.propagation; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.function.Supplier; import org.slf4j.Logger; @@ -64,8 +64,7 @@ public boolean accept(String key, String value) { public static final HttpCodec.Injector INJECTOR = new HttpCodec.Injector() { @Override - public void inject( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) {} + public void inject(DDSpanContext context, C carrier, CarrierSetter setter) {} }; public static HttpCodec.Extractor newExtractor( diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java index 4ae2fc4efee..98157a2b135 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/W3CHttpCodec.java @@ -8,6 +8,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD128bTraceId; import datadog.trace.api.DDSpanId; @@ -18,7 +19,6 @@ import datadog.trace.api.internal.util.LongStringUtils; import datadog.trace.api.sampling.PrioritySampling; import datadog.trace.api.sampling.SamplingMechanism; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.bootstrap.instrumentation.api.TagContext; import datadog.trace.core.DDSpanContext; import java.util.Map; @@ -63,14 +63,13 @@ public Injector(Map invertedBaggageMapping) { @Override public void inject( - final DDSpanContext context, final C carrier, final AgentPropagation.Setter setter) { + final DDSpanContext context, final C carrier, final CarrierSetter setter) { injectTraceParent(context, carrier, setter); injectTraceState(context, carrier, setter); injectBaggage(context, carrier, setter); } - private void injectTraceParent( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectTraceParent(DDSpanContext context, C carrier, CarrierSetter setter) { StringBuilder sb = new StringBuilder(TRACE_PARENT_LENGTH); sb.append("00-"); sb.append(context.getTraceId().toHexString()); @@ -80,8 +79,7 @@ private void injectTraceParent( setter.set(carrier, TRACE_PARENT_KEY, sb.toString()); } - private void injectTraceState( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectTraceState(DDSpanContext context, C carrier, CarrierSetter setter) { PropagationTags propagationTags = context.getPropagationTags(); if (propagationTags.getLastParentId() == null) { if (context.isRemote()) { @@ -100,8 +98,7 @@ private void injectTraceState( } } - private void injectBaggage( - DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + private void injectBaggage(DDSpanContext context, C carrier, CarrierSetter setter) { long e2eStart = context.getEndToEndStartTime(); if (e2eStart > 0) { setter.set(carrier, E2E_START_KEY, Long.toString(NANOSECONDS.toMillis(e2eStart))); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java index 880f84e1738..f2396d83706 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/propagation/XRayHttpCodec.java @@ -7,6 +7,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DD64bTraceId; import datadog.trace.api.DDSpanId; @@ -15,7 +16,6 @@ import datadog.trace.api.TraceConfig; import datadog.trace.api.TracePropagationStyle; import datadog.trace.api.sampling.PrioritySampling; -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation; import datadog.trace.core.DDSpanContext; import java.util.Map; import java.util.TreeMap; @@ -68,7 +68,7 @@ public Injector(Map invertedBaggageMapping) { } @Override - public void inject(DDSpanContext context, C carrier, AgentPropagation.Setter setter) { + public void inject(DDSpanContext context, C carrier, CarrierSetter setter) { long e2eStart = context.getEndToEndStartTime(); StringBuilder buf = diff --git a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java index f5fda25adf8..cd7fae33672 100644 --- a/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java +++ b/dd-trace-core/src/main/java/datadog/trace/lambda/LambdaHandler.java @@ -1,5 +1,6 @@ package datadog.trace.lambda; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static java.util.concurrent.TimeUnit.SECONDS; import com.squareup.moshi.JsonAdapter; @@ -84,15 +85,13 @@ public static AgentSpanContext notifyStartInvocation(CoreTracer tracer, Object e .execute()) { if (response.isSuccessful()) { - return tracer - .propagate() - .extract( - response.headers(), - (carrier, classifier) -> { - for (String headerName : carrier.names()) { - classifier.accept(headerName, carrier.get(headerName)); - } - }); + return extractContextAndGetSpanContext( + response.headers(), + (carrier, classifier) -> { + for (String headerName : carrier.names()) { + classifier.accept(headerName, carrier.get(headerName)); + } + }); } } catch (Throwable ignored) { log.error("could not reach the extension"); diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy index ce7dd5deba0..b38482e3c6d 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/MapSetter.groovy @@ -1,8 +1,11 @@ package datadog.trace.core.propagation -import datadog.trace.bootstrap.instrumentation.api.AgentPropagation +import datadog.context.propagation.CarrierSetter -class MapSetter implements AgentPropagation.Setter> { +import javax.annotation.ParametersAreNonnullByDefault + +@ParametersAreNonnullByDefault +class MapSetter implements CarrierSetter> { static final INSTANCE = new MapSetter() @Override diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy index 7c26cbc7e16..99e33c025bf 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/propagation/TracingPropagatorTest.groovy @@ -83,7 +83,7 @@ class TracingPropagatorTest extends DDCoreSpecification { given: def sampler = new ControllableSampler() def tracer = tracerBuilder().writer(new LoggingWriter()).sampler(sampler).build() - def setter = Mock(AgentPropagation.Setter) + def setter = Mock(CarrierSetter) def carrier = new Object() when: @@ -118,7 +118,7 @@ class TracingPropagatorTest extends DDCoreSpecification { given: def sampler = new ControllableSampler() def tracer = tracerBuilder().writer(new LoggingWriter()).sampler(sampler).build() - def setter = Mock(AgentPropagation.Setter) + def setter = Mock(CarrierSetter) def carrier = new Object() when: diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index 0c3df7900d0..db5c06e1410 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -1,8 +1,10 @@ package datadog.opentracing; import static datadog.context.propagation.Propagators.defaultPropagator; +import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.extractContextAndGetSpanContext; import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext; +import datadog.context.propagation.CarrierSetter; import datadog.trace.api.Config; import datadog.trace.api.DDTags; import datadog.trace.api.GlobalTracer; @@ -489,7 +491,7 @@ public void inject(final SpanContext spanContext, final Format format, fi public SpanContext extract(final Format format, final C carrier) { if (carrier instanceof TextMap) { final AgentSpanContext tagContext = - tracer.propagate().extract((TextMap) carrier, new TextMapGetter((TextMap) carrier)); + extractContextAndGetSpanContext((TextMap) carrier, new TextMapGetter((TextMap) carrier)); return converter.toSpanContext(tagContext); } else { @@ -533,7 +535,7 @@ public void close() { tracer.close(); } - private static class TextMapSetter implements AgentPropagation.Setter { + private static class TextMapSetter implements CarrierSetter { static final TextMapSetter INSTANCE = new TextMapSetter(); @Override diff --git a/internal-api/build.gradle b/internal-api/build.gradle index edd75519a6f..db507ae90ed 100644 --- a/internal-api/build.gradle +++ b/internal-api/build.gradle @@ -78,7 +78,6 @@ excludedClassesCoverage += [ "datadog.trace.bootstrap.instrumentation.api.AgentSpanContext", "datadog.trace.bootstrap.instrumentation.api.AgentTracer", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentHistogram", - "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentPropagation", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopAgentTraceCollector", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTraceConfig", "datadog.trace.bootstrap.instrumentation.api.AgentTracer.NoopTracerAPI", diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java index 091c7465260..3ca1cfdc493 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentPropagation.java @@ -4,36 +4,34 @@ import static datadog.context.propagation.Concern.withPriority; import datadog.context.Context; -import datadog.context.propagation.CarrierSetter; import datadog.context.propagation.CarrierVisitor; import datadog.context.propagation.Concern; import datadog.context.propagation.Propagators; import java.util.function.BiConsumer; import javax.annotation.ParametersAreNonnullByDefault; -public interface AgentPropagation { - Concern TRACING_CONCERN = named("tracing"); - Concern XRAY_TRACING_CONCERN = named("tracing-xray"); - Concern STANDALONE_ASM_CONCERN = named("asm-standalone"); +public class AgentPropagation { + public static final Concern TRACING_CONCERN = named("tracing"); + public static final Concern XRAY_TRACING_CONCERN = named("tracing-xray"); + public static final Concern STANDALONE_ASM_CONCERN = named("asm-standalone"); // TODO DSM propagator should run after the other propagators as it stores the pathway context // TODO into the span context for now. Remove priority after the migration is complete. - Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110); + public static final Concern DSM_CONCERN = withPriority("data-stream-monitoring", 110); - interface Setter extends CarrierSetter { - void set(C carrier, String key, String value); - } - - default AgentSpanContext.Extracted extract(final C carrier, final ContextVisitor getter) { + /** @deprecated Use {@link Propagators} API instead. */ + @Deprecated + public static AgentSpanContext.Extracted extractContextAndGetSpanContext( + final C carrier, final ContextVisitor getter) { Context extracted = Propagators.defaultPropagator().extract(Context.root(), carrier, getter); AgentSpan extractedSpan = AgentSpan.fromContext(extracted); return extractedSpan == null ? null : (AgentSpanContext.Extracted) extractedSpan.context(); } - interface KeyClassifier { + public interface KeyClassifier { boolean accept(String key, String value); } - interface ContextVisitor extends CarrierVisitor { + public interface ContextVisitor extends CarrierVisitor { void forEachKey(C carrier, KeyClassifier classifier); @ParametersAreNonnullByDefault diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java index 9bac12ab235..90a524d89ff 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentTracer.java @@ -157,10 +157,6 @@ public static void setAsyncPropagationEnabled(boolean asyncPropagationEnabled) { get().setAsyncPropagationEnabled(asyncPropagationEnabled); } - public static AgentPropagation propagate() { - return get().propagate(); - } - /** * Returns the noop span instance. * @@ -299,8 +295,6 @@ AgentSpan startSpan( AgentScope activeScope(); - AgentPropagation propagate(); - default AgentSpan blackholeSpan() { final AgentSpan active = activeSpan(); return new BlackHoleSpan(active != null ? active.getTraceId() : DDTraceId.ZERO); @@ -459,11 +453,6 @@ public AgentScope activeScope() { return null; } - @Override - public AgentPropagation propagate() { - return NoopAgentPropagation.INSTANCE; - } - @Override public AgentSpan blackholeSpan() { return NoopSpan.INSTANCE; // no-op tracer stays no-op @@ -592,10 +581,6 @@ public void updatePreferredServiceName(String serviceName) { } } - static class NoopAgentPropagation implements AgentPropagation { - static final NoopAgentPropagation INSTANCE = new NoopAgentPropagation(); - } - public static class NoopAgentTraceCollector implements AgentTraceCollector { public static final NoopAgentTraceCollector INSTANCE = new NoopAgentTraceCollector();