Skip to content

Commit 8c4249a

Browse files
committed
feat(core): Refactor propagation calls to the new inject API
1 parent 3f4b7a8 commit 8c4249a

File tree

77 files changed

+200
-87
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+200
-87
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/httpurlconnection/HeadersInjectAdapter.java

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

33
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
44
import java.net.HttpURLConnection;
5+
import javax.annotation.ParametersAreNonnullByDefault;
56

7+
@ParametersAreNonnullByDefault
68
public class HeadersInjectAdapter implements AgentPropagation.Setter<HttpURLConnection> {
79

810
public static final HeadersInjectAdapter SETTER = new HeadersInjectAdapter();

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/rmi/ContextPayload.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package datadog.trace.bootstrap.instrumentation.rmi;
22

3-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
4-
3+
import datadog.context.propagation.Propagators;
54
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
65
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
76
import java.io.IOException;
87
import java.io.ObjectInput;
98
import java.io.ObjectOutput;
109
import java.util.HashMap;
1110
import java.util.Map;
11+
import javax.annotation.ParametersAreNonnullByDefault;
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
1414

@@ -33,7 +33,7 @@ public Map<String, String> getContext() {
3333

3434
public static ContextPayload from(final AgentSpan span) {
3535
final ContextPayload payload = new ContextPayload();
36-
propagate().inject(span, payload, SETTER);
36+
Propagators.defaultPropagator().inject(span, payload, SETTER);
3737
return payload;
3838
}
3939

@@ -54,6 +54,7 @@ public void write(final ObjectOutput out) throws IOException {
5454
out.writeObject(context);
5555
}
5656

57+
@ParametersAreNonnullByDefault
5758
public static class InjectAdapter implements AgentPropagation.Setter<ContextPayload> {
5859
@Override
5960
public void set(final ContextPayload carrier, final String key, final String value) {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemModuleImpl.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package datadog.trace.civisibility.domain.buildsystem;
22

3-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.propagate;
4-
53
import datadog.communication.ddagent.TracerVersion;
4+
import datadog.context.propagation.Propagators;
65
import datadog.trace.api.Config;
76
import datadog.trace.api.DDTags;
87
import datadog.trace.api.civisibility.CIConstants;
@@ -33,10 +32,15 @@
3332
import datadog.trace.util.Strings;
3433
import java.net.InetSocketAddress;
3534
import java.nio.file.Path;
36-
import java.util.*;
35+
import java.util.Collection;
36+
import java.util.HashMap;
37+
import java.util.List;
38+
import java.util.Map;
39+
import java.util.Properties;
3740
import java.util.concurrent.atomic.LongAdder;
3841
import java.util.function.Consumer;
3942
import javax.annotation.Nullable;
43+
import javax.annotation.ParametersAreNonnullByDefault;
4044

4145
public class BuildSystemModuleImpl extends AbstractTestModule implements BuildSystemModule {
4246

@@ -105,6 +109,7 @@ public <T extends CoverageCalculator> BuildSystemModuleImpl(
105109
setTag(Tags.TEST_COMMAND, startCommand);
106110
}
107111

112+
@ParametersAreNonnullByDefault
108113
private static final class ChildProcessPropertiesPropagationSetter
109114
implements AgentPropagation.Setter<Map<String, String>> {
110115
static final AgentPropagation.Setter<Map<String, String>> INSTANCE =
@@ -221,7 +226,7 @@ private Map<String, String> getPropertiesPropagatedToChildProcess(
221226
}
222227

223228
// propagate module span context to child processes
224-
propagate()
229+
Propagators.defaultPropagator()
225230
.inject(span, propagatedSystemProperties, ChildProcessPropertiesPropagationSetter.INSTANCE);
226231

227232
return propagatedSystemProperties;

dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/context/propagation/AgentTextMapPropagator.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import static datadog.opentelemetry.shim.trace.OtelSpanContext.fromRemote;
44
import static datadog.trace.api.TracePropagationStyle.TRACECONTEXT;
55

6+
import datadog.context.propagation.Propagators;
67
import datadog.opentelemetry.shim.context.OtelContext;
78
import datadog.opentelemetry.shim.trace.OtelExtractedContext;
89
import datadog.opentelemetry.shim.trace.OtelSpan;
910
import datadog.trace.api.TracePropagationStyle;
11+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1012
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
1113
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext.Extracted;
1214
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
@@ -36,11 +38,7 @@ public <C> void inject(Context context, @Nullable C carrier, TextMapSetter<C> se
3638
if (carrier == null) {
3739
return;
3840
}
39-
Span span = Span.fromContext(context);
40-
if (span.getSpanContext().isValid()) {
41-
AgentSpanContext agentSpanContext = OtelExtractedContext.extract(context);
42-
AgentTracer.propagate().inject(agentSpanContext, carrier, setter::set);
43-
}
41+
Propagators.defaultPropagator().inject(convertContext(context), carrier, setter::set);
4442
}
4543

4644
@Override
@@ -66,15 +64,23 @@ public <C> Context extract(Context context, @Nullable C carrier, TextMapGetter<C
6664
}
6765
}
6866

67+
private static datadog.context.Context convertContext(Context context) {
68+
// TODO Extract baggage too
69+
// TODO Create fast path from OtelSpan --> AgentSpan delegate --> with() to inflate as full
70+
// context if baggage
71+
AgentSpanContext extract = OtelExtractedContext.extract(context);
72+
return AgentSpan.fromSpanContext(extract);
73+
}
74+
6975
/**
7076
* Extracts tracestate if {@code tracestate} header is present and extracted context comes from
7177
* {@link TracePropagationStyle#TRACECONTEXT}
7278
*
7379
* @param extracted The extracted context.
7480
* @param carrier The context carrier.
7581
* @param getter The context getter.
76-
* @return The extracted tracestate, or an empty tracestate otherwise.
7782
* @param <C> The carrier type.
83+
* @return The extracted tracestate, or an empty tracestate otherwise.
7884
*/
7985
private static <C> TraceState extractTraceState(
8086
Extracted extracted, C carrier, TextMapGetter<C> getter) {

dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ public AgentSpanContext getAgentSpanContext() {
172172

173173
@Override
174174
public AgentSpan asAgentSpan() {
175-
return delegate;
175+
return this.delegate;
176176
}
177177

178178
private static class NoopSpan implements Span {

dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpClientHelpers.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import akka.http.scaladsl.model.headers.CustomHeader;
99
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
1010
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
11+
import javax.annotation.ParametersAreNonnullByDefault;
1112
import scala.runtime.AbstractFunction1;
1213
import scala.util.Try;
1314

@@ -35,7 +36,7 @@ public Void apply(final Try<HttpResponse> result) {
3536
public static class AkkaHttpHeaders implements AgentPropagation.Setter<HttpRequest> {
3637
private HttpRequest request;
3738
// Did this request have a span when the AkkaHttpHeaders object was created?
38-
private boolean hadSpan;
39+
private final boolean hadSpan;
3940

4041
public AkkaHttpHeaders(final HttpRequest request) {
4142
hadSpan = request != null && request.getHeader(HasSpanHeader.class).isPresent();
@@ -51,6 +52,7 @@ public boolean hadSpan() {
5152
return hadSpan;
5253
}
5354

55+
@ParametersAreNonnullByDefault
5456
@Override
5557
public void set(final HttpRequest carrier, final String key, final String value) {
5658
// Coerce a Scala trait Self type into the correct type

dd-java-agent/instrumentation/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/AkkaHttpSingleRequestInstrumentation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import akka.http.scaladsl.model.HttpRequest;
1515
import akka.http.scaladsl.model.HttpResponse;
1616
import com.google.auto.service.AutoService;
17+
import datadog.context.propagation.Propagators;
1718
import datadog.trace.agent.tooling.Instrumenter;
1819
import datadog.trace.agent.tooling.InstrumenterModule;
1920
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
@@ -78,7 +79,7 @@ public static AgentScope methodEnter(
7879
DECORATE.onRequest(span, request);
7980

8081
if (request != null) {
81-
propagate().inject(span, request, headers);
82+
Propagators.defaultPropagator().inject(span, request, headers);
8283
propagate()
8384
.injectPathwayContext(
8485
span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS);

dd-java-agent/instrumentation/akka-http/akka-http-10.6/src/main/java11/datadog/trace/instrumentation/akkahttp106/SingleRequestAdvice.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import akka.http.scaladsl.HttpExt;
88
import akka.http.scaladsl.model.HttpRequest;
99
import akka.http.scaladsl.model.HttpResponse;
10+
import datadog.context.propagation.Propagators;
1011
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1112
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1213
import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator;
@@ -28,7 +29,7 @@ public static AgentScope methodEnter(
2829
AkkaHttpClientDecorator.DECORATE.onRequest(span, request);
2930

3031
if (request != null) {
31-
propagate().inject(span, request, headers);
32+
Propagators.defaultPropagator().inject(span, request, headers);
3233
propagate()
3334
.injectPathwayContext(
3435
span, request, headers, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS);

dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/DelegatingRequestProducer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static datadog.trace.instrumentation.apachehttpasyncclient.ApacheHttpAsyncClientDecorator.DECORATE;
55
import static datadog.trace.instrumentation.apachehttpasyncclient.HttpHeadersInjectAdapter.SETTER;
66

7+
import datadog.context.propagation.Propagators;
78
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
89
import datadog.trace.bootstrap.instrumentation.decorator.HttpClientDecorator;
910
import java.io.IOException;
@@ -34,7 +35,7 @@ public HttpRequest generateRequest() throws IOException, HttpException {
3435
final HttpRequest request = delegate.generateRequest();
3536
DECORATE.onRequest(span, new HostAndRequestAsHttpUriRequest(delegate.getTarget(), request));
3637

37-
propagate().inject(span, request, SETTER);
38+
Propagators.defaultPropagator().inject(span, request, SETTER);
3839
propagate()
3940
.injectPathwayContext(span, request, SETTER, HttpClientDecorator.CLIENT_PATHWAY_EDGE_TAGS);
4041

dd-java-agent/instrumentation/apache-httpasyncclient-4/src/main/java/datadog/trace/instrumentation/apachehttpasyncclient/HttpHeadersInjectAdapter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package datadog.trace.instrumentation.apachehttpasyncclient;
22

33
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
4+
import javax.annotation.ParametersAreNonnullByDefault;
45
import org.apache.http.HttpRequest;
56

7+
@ParametersAreNonnullByDefault
68
public class HttpHeadersInjectAdapter implements AgentPropagation.Setter<HttpRequest> {
79

810
public static final HttpHeadersInjectAdapter SETTER = new HttpHeadersInjectAdapter();

0 commit comments

Comments
 (0)