Skip to content

Commit f51d33e

Browse files
mccullsdevflow.devflow-routing-intake
andauthored
Cleanup Java8BytecodeBridge and align it more with OTel (#11857)
Cleanup Java8BytecodeBridge and align it more with OTel * added static imports for all method calls * dropped the `get` prefix from context methods * added `currentSpan` method * added `baggageFromContext` method * pruned unused methods (may add them back later if/when needed) Limit use of Java8BytecodeBridge to advice code that might be patched into pre-Java8 bytecode Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
1 parent f2461a0 commit f51d33e

115 files changed

Lines changed: 289 additions & 304 deletions

File tree

Some content is hidden

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

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/api/Java8BytecodeBridge.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,37 @@ public class Java8BytecodeBridge {
1313
/**
1414
* @see Context#root()
1515
*/
16-
public static Context getRootContext() {
16+
public static Context rootContext() {
1717
return Context.root();
1818
}
1919

2020
/**
2121
* @see Context#current()
2222
*/
23-
public static Context getCurrentContext() {
23+
public static Context currentContext() {
2424
return Context.current();
2525
}
2626

2727
/**
28-
* @see Context#from(Object)
28+
* @see AgentSpan#current()
2929
*/
30-
public static Context getContextFrom(Object carrier) {
31-
return Context.from(carrier);
30+
public static AgentSpan currentSpan() {
31+
return AgentSpan.current();
3232
}
3333

3434
/**
35-
* @see Context#detachFrom(Object)
35+
* @see AgentSpan#fromContext(Context)
3636
*/
37-
public static Context detachContextFrom(Object carrier) {
38-
return Context.detachFrom(carrier);
37+
public static AgentSpan spanFromContext(Context context) {
38+
return AgentSpan.fromContext(context);
3939
}
4040

4141
/**
42-
* @see AgentSpan#fromContext(Context)
42+
* @see Baggage#fromContext(Context)
4343
*/
44-
public static AgentSpan spanFromContext(Context context) {
45-
return AgentSpan.fromContext(context);
44+
public static Baggage baggageFromContext(Context context) {
45+
return Baggage.fromContext(context);
4646
}
47+
48+
private Java8BytecodeBridge() {}
4749
}

dd-java-agent/instrumentation/akka/akka-actor-2.5/src/main/java/datadog/trace/instrumentation/akka/concurrent/AkkaActorCellInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.checkpointActiveForRollback;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.rollbackActiveToCheckpoint;
6-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getCurrentContext;
6+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.currentContext;
77
import static java.util.Collections.singletonMap;
88
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
99

@@ -71,7 +71,7 @@ public static Context enter(
7171
checkpointActiveForRollback();
7272
return null;
7373
} else {
74-
return getCurrentContext().swap();
74+
return currentContext().swap();
7575
}
7676
}
7777

dd-java-agent/instrumentation/akka/akka-actor-2.5/src/main/java/datadog/trace/instrumentation/akka/concurrent/AkkaMailboxInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.checkpointActiveForRollback;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.rollbackActiveToCheckpoint;
6-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getCurrentContext;
6+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.currentContext;
77
import static java.util.Collections.singletonList;
88
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
99

@@ -68,7 +68,7 @@ public static Context enter() {
6868
checkpointActiveForRollback();
6969
return null;
7070
} else {
71-
return getCurrentContext().swap();
71+
return currentContext().swap();
7272
}
7373
}
7474

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
7-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getCurrentContext;
7+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.currentContext;
88
import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientDecorator.AKKA_CLIENT_REQUEST;
99
import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientDecorator.AKKA_HTTP_CLIENT;
1010
import static datadog.trace.instrumentation.akkahttp.AkkaHttpClientDecorator.DECORATE;
@@ -116,7 +116,7 @@ public static void methodEnter(
116116
return;
117117
}
118118
final AkkaHttpHeaders headers = new AkkaHttpHeaders(request);
119-
DECORATE.injectContext(getCurrentContext(), request, headers);
119+
DECORATE.injectContext(currentContext(), request, headers);
120120
request = headers.getRequest();
121121
}
122122
}

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

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

33
import static datadog.trace.agent.tooling.InstrumenterModule.TargetSystem.CONTEXT_TRACKING;
4-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getCurrentContext;
4+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.currentContext;
55
import static datadog.trace.instrumentation.akkahttp106.AkkaHttpClientDecorator.DECORATE;
66

77
import akka.http.scaladsl.model.HttpRequest;
@@ -19,7 +19,7 @@ public static void methodEnter(
1919
final AkkaHttpClientHelpers.AkkaHttpHeaders headers =
2020
new AkkaHttpClientHelpers.AkkaHttpHeaders(request);
2121

22-
DECORATE.injectContext(getCurrentContext(), request, headers);
22+
DECORATE.injectContext(currentContext(), request, headers);
2323
request = headers.getRequest();
2424
}
2525
}

dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/ClientCallImplInstrumentation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
8+
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.currentContext;
89
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.COMPONENT_NAME;
910
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.DECORATE;
1011
import static datadog.trace.instrumentation.armeria.grpc.client.GrpcClientDecorator.GRPC_MESSAGE;
@@ -21,7 +22,6 @@
2122
import datadog.trace.bootstrap.InstrumentationContext;
2223
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
2324
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
24-
import datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge;
2525
import io.grpc.ClientCall;
2626
import io.grpc.Metadata;
2727
import io.grpc.MethodDescriptor;
@@ -138,7 +138,7 @@ public static void after(
138138
public static final class StartContextPropagationAdvice {
139139
@Advice.OnMethodEnter(suppress = Throwable.class)
140140
public static void before(@Advice.Argument(1) Metadata headers) {
141-
DECORATE.injectContext(Java8BytecodeBridge.getCurrentContext(), headers, SETTER);
141+
DECORATE.injectContext(currentContext(), headers, SETTER);
142142
}
143143
}
144144

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.blackholeSpan;
99
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
1010
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.traceConfig;
11-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.spanFromContext;
1211
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.AWS_LEGACY_TRACING;
1312
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.COMPONENT_NAME;
1413
import static datadog.trace.instrumentation.aws.v0.AwsSdkClientDecorator.DECORATE;
@@ -59,7 +58,7 @@ public void beforeRequest(final Request<?> request) {
5958
activateSpanWithoutScope(blackholeSpan());
6059
} else {
6160
Context context = requestContextStore.remove(request.getOriginalRequest());
62-
AgentSpan span = spanFromContext(context);
61+
AgentSpan span = AgentSpan.fromContext(context);
6362
if (span != null) {
6463
// we'll land here for SQS send requests when DSM is enabled. In that case, we create the
6564
// span in SqsInterceptor to inject DSM tags.
@@ -94,7 +93,7 @@ public void afterResponse(final Request<?> request, final Response<?> response)
9493
AgentSpan span = null;
9594
if (context != null) {
9695
request.addHandlerContext(CONTEXT_CONTEXT_KEY, null);
97-
span = spanFromContext(context);
96+
span = AgentSpan.fromContext(context);
9897
if (span != null) {
9998
DECORATE.onResponse(span, response);
10099
DECORATE.onServiceResponse(span, request.getServiceName(), response);
@@ -153,7 +152,7 @@ public void afterError(final Request<?> request, final Response<?> response, fin
153152

154153
if (context != null) {
155154
request.addHandlerContext(CONTEXT_CONTEXT_KEY, null);
156-
final AgentSpan span = spanFromContext(context);
155+
final AgentSpan span = AgentSpan.fromContext(context);
157156
if (span != null) {
158157
if (response != null) {
159158
DECORATE.onResponse(span, response);

dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingIterator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext;
88
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious;
99
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
10-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getRootContext;
11-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.spanFromContext;
1210
import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName;
1311
import static datadog.trace.instrumentation.aws.v1.sqs.MessageExtractAdapter.GETTER;
1412
import static datadog.trace.instrumentation.aws.v1.sqs.SqsDecorator.BROKER_DECORATE;
@@ -20,6 +18,7 @@
2018
import static java.util.concurrent.TimeUnit.MILLISECONDS;
2119

2220
import com.amazonaws.services.sqs.model.Message;
21+
import datadog.context.Context;
2322
import datadog.trace.api.Config;
2423
import datadog.trace.api.InstrumenterConfig;
2524
import datadog.trace.api.datastreams.DataStreamsTags;
@@ -50,7 +49,7 @@ public boolean hasNext() {
5049
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
5150
closePrevious(true);
5251
} else {
53-
final AgentSpan previousSpan = spanFromContext(getRootContext().swap());
52+
final AgentSpan previousSpan = AgentSpan.fromContext(Context.root().swap());
5453
if (previousSpan != null) {
5554
previousSpan.finishWithEndToEnd();
5655
}
@@ -71,7 +70,7 @@ protected void startNewMessageSpan(Message message) {
7170
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
7271
closePrevious(true);
7372
} else if (message == null) { // previous message span was the last
74-
final AgentSpan previousSpan = spanFromContext(getRootContext().swap());
73+
final AgentSpan previousSpan = AgentSpan.fromContext(Context.root().swap());
7574
if (previousSpan != null) {
7675
previousSpan.finishWithEndToEnd();
7776
}
@@ -114,7 +113,7 @@ protected void startNewMessageSpan(Message message) {
114113
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
115114
activateNext(span);
116115
} else {
117-
final AgentSpan previousSpan = spanFromContext(span.swap());
116+
final AgentSpan previousSpan = AgentSpan.fromContext(span.swap());
118117
if (previousSpan != null) {
119118
previousSpan.finishWithEndToEnd();
120119
}

dd-java-agent/instrumentation/aws-java/aws-java-sqs-1.0/src/main/java/datadog/trace/instrumentation/aws/v1/sqs/TracingListIterator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package datadog.trace.instrumentation.aws.v1.sqs;
22

33
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious;
4-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getRootContext;
5-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.spanFromContext;
64

75
import com.amazonaws.services.sqs.model.Message;
6+
import datadog.context.Context;
87
import datadog.trace.api.InstrumenterConfig;
98
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
109
import java.util.ListIterator;
@@ -24,7 +23,7 @@ public boolean hasPrevious() {
2423
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
2524
closePrevious(true);
2625
} else {
27-
final AgentSpan previousSpan = spanFromContext(getRootContext().swap());
26+
final AgentSpan previousSpan = AgentSpan.fromContext(Context.root().swap());
2827
if (previousSpan != null) {
2928
previousSpan.finishWithEndToEnd();
3029
}

dd-java-agent/instrumentation/aws-java/aws-java-sqs-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/sqs/TracingIterator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateNext;
88
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.closePrevious;
99
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
10-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.getRootContext;
11-
import static datadog.trace.bootstrap.instrumentation.api.Java8BytecodeBridge.spanFromContext;
1210
import static datadog.trace.bootstrap.instrumentation.api.URIUtils.urlFileName;
1311
import static datadog.trace.instrumentation.aws.v2.sqs.MessageExtractAdapter.GETTER;
1412
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.BROKER_DECORATE;
@@ -19,6 +17,7 @@
1917
import static datadog.trace.instrumentation.aws.v2.sqs.SqsDecorator.TIME_IN_QUEUE_ENABLED;
2018
import static java.util.concurrent.TimeUnit.MILLISECONDS;
2119

20+
import datadog.context.Context;
2221
import datadog.trace.api.Config;
2322
import datadog.trace.api.InstrumenterConfig;
2423
import datadog.trace.api.datastreams.DataStreamsTags;
@@ -52,7 +51,7 @@ public boolean hasNext() {
5251
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
5352
closePrevious(true);
5453
} else {
55-
final AgentSpan previousSpan = spanFromContext(getRootContext().swap());
54+
final AgentSpan previousSpan = AgentSpan.fromContext(Context.root().swap());
5655
if (previousSpan != null) {
5756
previousSpan.finishWithEndToEnd();
5857
}
@@ -73,7 +72,7 @@ protected void startNewMessageSpan(Message message) {
7372
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
7473
closePrevious(true);
7574
} else if (message == null) { // previous message span was the last
76-
final AgentSpan previousSpan = spanFromContext(getRootContext().swap());
75+
final AgentSpan previousSpan = AgentSpan.fromContext(Context.root().swap());
7776
if (previousSpan != null) {
7877
previousSpan.finishWithEndToEnd();
7978
}
@@ -116,7 +115,7 @@ protected void startNewMessageSpan(Message message) {
116115
if (InstrumenterConfig.get().isLegacyContextManagerEnabled()) {
117116
activateNext(span);
118117
} else {
119-
final AgentSpan previousSpan = spanFromContext(span.swap());
118+
final AgentSpan previousSpan = AgentSpan.fromContext(span.swap());
120119
if (previousSpan != null) {
121120
previousSpan.finishWithEndToEnd();
122121
}

0 commit comments

Comments
 (0)