Skip to content

Commit e2d8ef7

Browse files
committed
updating PR comments and addressing failing unit tests
1 parent fb60349 commit e2d8ef7

File tree

5 files changed

+40
-46
lines changed

5 files changed

+40
-46
lines changed

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/HttpServerDecorator.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import datadog.appsec.api.blocking.BlockingException;
1111
import datadog.context.Context;
12-
import datadog.context.ContextScope;
1312
import datadog.context.propagation.Propagators;
1413
import datadog.trace.api.Config;
1514
import datadog.trace.api.DDTags;
@@ -27,7 +26,6 @@
2726
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
2827
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
2928
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
30-
import datadog.trace.bootstrap.instrumentation.api.Baggage;
3129
import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities;
3230
import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes;
3331
import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities;
@@ -128,6 +126,7 @@ protected AgentTracer.TracerAPI tracer() {
128126
return AgentTracer.get();
129127
}
130128

129+
/** Deprecated. Use {@link #extractContext(REQUEST_CARRIER)} instead. */
131130
public AgentSpanContext.Extracted extract(REQUEST_CARRIER carrier) {
132131
AgentPropagation.ContextVisitor<REQUEST_CARRIER> getter = getter();
133132
if (null == carrier || null == getter) {
@@ -144,7 +143,7 @@ public Context extractContext(REQUEST_CARRIER carrier) {
144143
return Propagators.defaultPropagator().extract(Context.root(), carrier, getter);
145144
}
146145

147-
/** Deprecated. Use {@link #startSpan(String, Object, AgentSpanContext.Extracted)} instead. */
146+
/** Deprecated. Use {@link #startSpan(String, Object, Context)} instead. */
148147
@Deprecated
149148
public AgentSpan startSpan(REQUEST_CARRIER carrier, AgentSpanContext.Extracted context) {
150149
return startSpan("http-server", carrier, context);
@@ -167,20 +166,15 @@ public AgentSpan startSpan(
167166
return span;
168167
}
169168

169+
public AgentSpan startSpan(String instrumentationName, REQUEST_CARRIER carrier, Context context) {
170+
return startSpan(instrumentationName, carrier, getExtractedSpanContext(context));
171+
}
172+
170173
public AgentSpanContext.Extracted getExtractedSpanContext(Context context) {
171174
AgentSpan extractedSpan = AgentSpan.fromContext(context);
172175
return extractedSpan == null ? null : (AgentSpanContext.Extracted) extractedSpan.context();
173176
}
174177

175-
/* Verify whether we have only span contexts or more contexts */
176-
public ContextScope activateScope(Context context, AgentSpan span) {
177-
Baggage baggage = Baggage.fromContext(context);
178-
if (baggage == null) {
179-
return span.attach();
180-
}
181-
return context.with(span).attach();
182-
}
183-
184178
public AgentSpan onRequest(
185179
final AgentSpan span,
186180
final CONNECTION connection,

dd-java-agent/instrumentation/azure-functions/src/main/java/datadog/trace/instrumentation/azure/functions/AzureFunctionsInstrumentation.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.declaresMethod;
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.isAnnotatedWith;
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
6+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
67
import static datadog.trace.bootstrap.instrumentation.decorator.http.HttpResourceDecorator.HTTP_RESOURCE_DECORATOR;
78
import static datadog.trace.instrumentation.azurefunctions.AzureFunctionsDecorator.DECORATE;
89
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
@@ -13,11 +14,11 @@
1314
import com.microsoft.azure.functions.ExecutionContext;
1415
import com.microsoft.azure.functions.HttpRequestMessage;
1516
import com.microsoft.azure.functions.HttpResponseMessage;
16-
import datadog.context.Context;
17-
import datadog.context.ContextScope;
1817
import datadog.trace.agent.tooling.Instrumenter;
1918
import datadog.trace.agent.tooling.InstrumenterModule;
19+
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
2020
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
21+
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
2122
import net.bytebuddy.asm.Advice;
2223
import net.bytebuddy.description.type.TypeDescription;
2324
import net.bytebuddy.matcher.ElementMatcher;
@@ -63,28 +64,24 @@ public void methodAdvice(MethodTransformer transformer) {
6364

6465
public static class AzureFunctionsAdvice {
6566
@Advice.OnMethodEnter(suppress = Throwable.class)
66-
public static ContextScope methodEnter(
67+
public static AgentScope methodEnter(
6768
@Advice.Argument(0) final HttpRequestMessage request,
6869
@Advice.Argument(1) final ExecutionContext context) {
69-
final Context extractedContext = DECORATE.extractContext(request);
70-
final AgentSpan span =
71-
DECORATE.startSpan(
72-
"http-server", request, DECORATE.getExtractedSpanContext(extractedContext));
70+
final AgentSpanContext.Extracted extractedContext = DECORATE.extract(request);
71+
final AgentSpan span = DECORATE.startSpan(request, extractedContext);
7372
DECORATE.afterStart(span, context.getFunctionName());
74-
DECORATE.onRequest(
75-
span, request, request, DECORATE.getExtractedSpanContext(extractedContext));
73+
DECORATE.onRequest(span, request, request, extractedContext);
7674
HTTP_RESOURCE_DECORATOR.withRoute(
7775
span, request.getHttpMethod().name(), request.getUri().getPath());
78-
return DECORATE.activateScope(extractedContext, span);
76+
return activateSpan(span);
7977
}
8078

8179
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
8280
public static void methodExit(
83-
@Advice.Enter final ContextScope scope,
81+
@Advice.Enter final AgentScope scope,
8482
@Advice.Return final HttpResponseMessage response,
8583
@Advice.Thrown final Throwable throwable) {
86-
final Context context = scope.context();
87-
final AgentSpan span = AgentSpan.fromContext(context);
84+
final AgentSpan span = scope.span();
8885
DECORATE.onError(span, throwable);
8986
DECORATE.onResponse(span, response);
9087
DECORATE.beforeFinish(span);

dd-java-agent/instrumentation/grizzly-2/src/main/java/datadog/trace/instrumentation/grizzly/GrizzlyHttpHandlerInstrumentation.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package datadog.trace.instrumentation.grizzly;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
4+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
45
import static datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator.DD_SPAN_ATTRIBUTE;
56
import static datadog.trace.instrumentation.grizzly.GrizzlyDecorator.DECORATE;
67
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
78
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
89

910
import com.google.auto.service.AutoService;
10-
import datadog.context.Context;
11-
import datadog.context.ContextScope;
1211
import datadog.trace.agent.tooling.Instrumenter;
1312
import datadog.trace.agent.tooling.InstrumenterModule;
1413
import datadog.trace.api.CorrelationIdentifier;
1514
import datadog.trace.api.GlobalTracer;
1615
import datadog.trace.api.gateway.Flow;
16+
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1717
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
18+
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
1819
import net.bytebuddy.asm.Advice;
1920
import org.glassfish.grizzly.http.server.Request;
2021
import org.glassfish.grizzly.http.server.Response;
@@ -65,19 +66,19 @@ public static class HandleAdvice {
6566

6667
@Advice.OnMethodEnter(suppress = Throwable.class, skipOn = Advice.OnNonDefaultValue.class)
6768
public static boolean /* skip body */ methodEnter(
68-
@Advice.Local("contextScope") ContextScope scope,
69+
@Advice.Local("agentScope") AgentScope scope,
6970
@Advice.Argument(0) final Request request,
7071
@Advice.Argument(1) final Response response) {
7172
if (request.getAttribute(DD_SPAN_ATTRIBUTE) != null) {
7273
return false;
7374
}
7475

75-
final Context context = DECORATE.extractContext(request);
76-
final AgentSpan span = DECORATE.startSpan(request, DECORATE.getExtractedSpanContext(context));
76+
final AgentSpanContext.Extracted parentContext = DECORATE.extract(request);
77+
final AgentSpan span = DECORATE.startSpan(request, parentContext);
7778
DECORATE.afterStart(span);
78-
DECORATE.onRequest(span, request, request, DECORATE.getExtractedSpanContext(context));
79+
DECORATE.onRequest(span, request, request, parentContext);
7980

80-
scope = DECORATE.activateScope(context, span);
81+
scope = activateSpan(span);
8182

8283
request.setAttribute(DD_SPAN_ATTRIBUTE, span);
8384
request.setAttribute(CorrelationIdentifier.getTraceIdKey(), GlobalTracer.get().getTraceId());
@@ -100,15 +101,14 @@ public static class HandleAdvice {
100101
public static void methodExit(
101102
@Advice.Enter boolean skippedBody,
102103
@Advice.Return(readOnly = false) boolean retVal,
103-
@Advice.Local("contextScope") ContextScope scope,
104+
@Advice.Local("agentScope") AgentScope scope,
104105
@Advice.Thrown final Throwable throwable) {
105106
if (scope == null) {
106107
return;
107108
}
108109

109110
if (throwable != null) {
110-
final Context context = scope.context();
111-
final AgentSpan span = AgentSpan.fromContext(context);
111+
final AgentSpan span = scope.span();
112112
DECORATE.onError(span, throwable);
113113
DECORATE.beforeFinish(span);
114114
span.finish();

dd-java-agent/instrumentation/grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232/GrizzlyDecorator.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
package datadog.trace.instrumentation.grizzlyhttp232;
22

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
4+
35
import datadog.appsec.api.blocking.BlockingContentType;
4-
import datadog.context.Context;
5-
import datadog.context.ContextScope;
66
import datadog.trace.api.gateway.BlockResponseFunction;
77
import datadog.trace.api.gateway.Flow;
88
import datadog.trace.api.gateway.RequestContext;
99
import datadog.trace.api.internal.TraceSegment;
1010
import datadog.trace.bootstrap.ActiveSubsystems;
1111
import datadog.trace.bootstrap.instrumentation.api.AgentPropagation;
12+
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1213
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
14+
import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext;
1315
import datadog.trace.bootstrap.instrumentation.api.URIDataAdapter;
1416
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
1517
import datadog.trace.bootstrap.instrumentation.decorator.HttpServerDecorator;
@@ -112,13 +114,13 @@ public static NextAction onHttpCodecFilterExit(
112114
}
113115
HttpRequestPacket httpRequest = (HttpRequestPacket) httpHeader;
114116
HttpResponsePacket httpResponse = httpRequest.getResponse();
115-
Context context = DECORATE.extractContext(httpRequest);
116-
AgentSpan span = DECORATE.startSpan(httpRequest, DECORATE.getExtractedSpanContext(context));
117-
ContextScope scope = DECORATE.activateScope(context, span);
117+
AgentSpanContext.Extracted context = DECORATE.extract(httpRequest);
118+
AgentSpan span = DECORATE.startSpan(httpRequest, context);
119+
AgentScope scope = activateSpan(span);
118120
DECORATE.afterStart(span);
119121
ctx.getAttributes().setAttribute(DD_SPAN_ATTRIBUTE, span);
120122
ctx.getAttributes().setAttribute(DD_RESPONSE_ATTRIBUTE, httpResponse);
121-
DECORATE.onRequest(span, httpRequest, httpRequest, DECORATE.getExtractedSpanContext(context));
123+
DECORATE.onRequest(span, httpRequest, httpRequest, context);
122124

123125
Flow.Action.RequestBlockingAction rba = span.getRequestBlockingAction();
124126
if (rba != null && thiz instanceof HttpServerFilter) {

dd-java-agent/instrumentation/tomcat-5.5/src/main/java/datadog/trace/instrumentation/tomcat/TomcatServerInstrumentation.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,13 @@ public static ContextScope onService(@Advice.Argument(0) org.apache.coyote.Reque
124124
}
125125

126126
final Context extractedContext = DECORATE.extractContext(req);
127-
req.setAttribute(DD_EXTRACTED_CONTEXT_ATTRIBUTE, extractedContext);
127+
// TODO: Migrate setting DD_EXTRACTED_CONTEXT_ATTRIBUTE from AgentSpanContext.Extracted to
128+
// Context
129+
req.setAttribute(
130+
DD_EXTRACTED_CONTEXT_ATTRIBUTE, DECORATE.getExtractedSpanContext(extractedContext));
128131

129-
final AgentSpan span =
130-
DECORATE.startSpan(
131-
"http-server", req, DECORATE.getExtractedSpanContext(extractedContext));
132-
final ContextScope scope = DECORATE.activateScope(extractedContext, span);
132+
final AgentSpan span = DECORATE.startSpan("http-server", req, extractedContext);
133+
final ContextScope scope = extractedContext.with(span).attach();
133134
// This span is finished when Request.recycle() is called by RequestInstrumentation.
134135
DECORATE.afterStart(span);
135136

0 commit comments

Comments
 (0)