Skip to content

Commit ddb0406

Browse files
committed
feat(core): Migrate XRax inject calls to new API
1 parent 09144b5 commit ddb0406

File tree

6 files changed

+64
-14
lines changed

6 files changed

+64
-14
lines changed

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/AwsSdkClientDecorator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ protected int status(final Response response) {
333333
return response.getHttpResponse().getStatusCode();
334334
}
335335

336+
@ParametersAreNonnullByDefault
336337
@Override
337338
public void set(Request<?> carrier, String key, String value) {
338339
carrier.addHeader(key, value);

dd-java-agent/instrumentation/aws-java-sdk-1.11.0/src/main/java/datadog/trace/instrumentation/aws/v0/TracingRequestHandler.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan;
5-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
65
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
76
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_IN;
87
import static datadog.trace.core.datastreams.TagsProcessor.DIRECTION_TAG;
@@ -17,12 +16,12 @@
1716
import com.amazonaws.handlers.HandlerContextKey;
1817
import com.amazonaws.handlers.RequestHandler2;
1918
import datadog.trace.api.Config;
20-
import datadog.trace.api.TracePropagationStyle;
2119
import datadog.trace.bootstrap.ContextStore;
2220
import datadog.trace.bootstrap.instrumentation.api.AgentDataStreamsMonitoring;
2321
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
2422
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
2523
import datadog.trace.bootstrap.instrumentation.api.PathwayContext;
24+
import datadog.trace.core.propagation.XRayPropagator;
2625
import java.util.Date;
2726
import java.util.LinkedHashMap;
2827
import java.util.List;
@@ -69,7 +68,7 @@ public void beforeRequest(final Request<?> request) {
6968
request.addHandlerContext(SPAN_CONTEXT_KEY, span);
7069
if (Config.get().isAwsPropagationEnabled()) {
7170
try {
72-
propagate().inject(span, request, DECORATE, TracePropagationStyle.XRAY);
71+
XRayPropagator.INSTANCE.inject(span, request, DECORATE);
7372
} catch (Throwable e) {
7473
log.warn("Unable to inject trace header", e);
7574
}

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/AwsSdkClientDecorator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Optional;
3838
import java.util.Set;
3939
import javax.annotation.Nonnull;
40+
import javax.annotation.ParametersAreNonnullByDefault;
4041
import software.amazon.awssdk.awscore.AwsResponse;
4142
import software.amazon.awssdk.core.SdkBytes;
4243
import software.amazon.awssdk.core.SdkField;
@@ -443,6 +444,7 @@ protected int status(final SdkHttpResponse response) {
443444
return response.statusCode();
444445
}
445446

447+
@ParametersAreNonnullByDefault
446448
@Override
447449
public void set(SdkHttpRequest.Builder carrier, String key, String value) {
448450
carrier.putHeader(key, value);

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/main/java/datadog/trace/instrumentation/aws/v2/TracingExecutionInterceptor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan;
5-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
65
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
76
import static datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator.AWS_LEGACY_TRACING;
87
import static datadog.trace.instrumentation.aws.v2.AwsSdkClientDecorator.DECORATE;
98

109
import datadog.trace.api.Config;
11-
import datadog.trace.api.TracePropagationStyle;
1210
import datadog.trace.bootstrap.ContextStore;
1311
import datadog.trace.bootstrap.InstanceStore;
1412
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1513
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
14+
import datadog.trace.core.propagation.XRayPropagator;
1615
import java.util.Optional;
1716
import org.slf4j.Logger;
1817
import org.slf4j.LoggerFactory;
@@ -71,7 +70,7 @@ public SdkHttpRequest modifyHttpRequest(
7170
final AgentSpan span = executionAttributes.getAttribute(SPAN_ATTRIBUTE);
7271
if (span != null) {
7372
SdkHttpRequest.Builder requestBuilder = context.httpRequest().toBuilder();
74-
propagate().inject(span, requestBuilder, DECORATE, TracePropagationStyle.XRAY);
73+
XRayPropagator.INSTANCE.inject(span, requestBuilder, DECORATE);
7574
return requestBuilder.build();
7675
}
7776
} catch (Throwable e) {

dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.core.propagation;
22

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromContext;
34
import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext;
45

56
import datadog.context.Context;
@@ -21,6 +22,8 @@ public class TracingPropagator implements Propagator {
2122
private final HttpCodec.Injector injector;
2223
private final HttpCodec.Extractor extractor;
2324

25+
// Create HttpCodecPropagator abstract class
26+
2427
// TODO Javadoc
2528
public TracingPropagator(HttpCodec.Injector injector, HttpCodec.Extractor extractor) {
2629
this.injector = injector;
@@ -34,17 +37,18 @@ public static Concern concern() {
3437

3538
@Override
3639
public <C> void inject(Context context, C carrier, CarrierSetter<C> setter) {
40+
AgentSpan span;
3741
//noinspection ConstantValue
38-
if (context == null || carrier == null || setter == null) {
42+
if (context == null
43+
|| carrier == null
44+
|| setter == null
45+
|| (span = fromContext(context)) == null) {
3946
return;
4047
}
41-
AgentSpan span = AgentSpan.fromContext(context);
42-
if (span != null) {
43-
AgentSpanContext spanContext = span.context();
44-
if (spanContext instanceof DDSpanContext) {
45-
DDSpanContext ddSpanContext = (DDSpanContext) context;
46-
injector.inject(ddSpanContext, carrier, setter::set);
47-
}
48+
AgentSpanContext spanContext = span.context();
49+
if (spanContext instanceof DDSpanContext) {
50+
DDSpanContext ddSpanContext = (DDSpanContext) context;
51+
this.injector.inject(ddSpanContext, carrier, setter::set);
4852
}
4953
}
5054

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package datadog.trace.core.propagation;
2+
3+
import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromContext;
4+
5+
import datadog.context.Context;
6+
import datadog.context.propagation.CarrierSetter;
7+
import datadog.context.propagation.CarrierVisitor;
8+
import datadog.context.propagation.Propagator;
9+
import datadog.trace.api.Config;
10+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
11+
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
12+
import datadog.trace.core.DDSpanContext;
13+
import javax.annotation.ParametersAreNonnullByDefault;
14+
15+
@ParametersAreNonnullByDefault
16+
public class XRayPropagator implements Propagator {
17+
public static final Propagator INSTANCE = new XRayPropagator();
18+
private final HttpCodec.Injector injector;
19+
20+
public XRayPropagator() {
21+
this.injector = XRayHttpCodec.newInjector(Config.get().getBaggageMapping());
22+
}
23+
24+
@Override
25+
public <C> void inject(Context context, C carrier, CarrierSetter<C> setter) {
26+
AgentSpan span;
27+
//noinspection ConstantValue
28+
if (context == null
29+
|| carrier == null
30+
|| setter == null
31+
|| (span = fromContext(context)) == null) {
32+
return;
33+
}
34+
AgentSpanContext spanContext = span.context();
35+
if (spanContext instanceof DDSpanContext) {
36+
DDSpanContext ddSpanContext = (DDSpanContext) context;
37+
this.injector.inject(ddSpanContext, carrier, setter::set);
38+
}
39+
}
40+
41+
@Override
42+
public <C> Context extract(Context context, C carrier, CarrierVisitor<C> visitor) {
43+
return context;
44+
}
45+
}

0 commit comments

Comments
 (0)