Skip to content

Commit fa4af98

Browse files
committed
fixes for exit spans
1 parent 4024d8a commit fa4af98

File tree

5 files changed

+15
-16
lines changed

5 files changed

+15
-16
lines changed

dd-java-agent/agent-debugger/debugger-bootstrap/src/main/java/datadog/trace/bootstrap/debugger/spanorigin/CodeOriginInfo.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static java.util.Arrays.stream;
55

66
import datadog.trace.api.InstrumenterConfig;
7+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
78
import java.lang.reflect.Method;
89
import java.util.stream.Collectors;
910

@@ -18,9 +19,12 @@ public static void entry(Method method) {
1819
}
1920
}
2021

21-
public static void exit() {
22+
public static void exit(AgentSpan span) {
2223
if (InstrumenterConfig.get().isCodeOriginEnabled()) {
23-
captureCodeOrigin(null);
24+
String probeId = captureCodeOrigin(null);
25+
if (span != null) {
26+
span.getLocalRootSpan().setTag(probeId, span);
27+
}
2428
}
2529
}
2630
}

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/codeorigin/CodeOriginProbeManager.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ public String createProbeForFrame(String signature) {
8888

8989
} else {
9090
probe = fingerprints.get(fingerprint);
91-
if (span != null && !probe.isEntrySpanProbe()) {
92-
span.getLocalRootSpan().setTag(probe.getId(), span);
93-
}
9491
}
9592

9693
return probe.getId();

dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void commit(
6969
CapturedContext exitContext,
7070
List<CapturedContext.CapturedThrowable> caughtExceptions) {
7171

72-
AgentSpan span = AgentTracer.activeSpan();
72+
AgentSpan span = findSpan(AgentTracer.activeSpan());
7373

7474
if (span == null) {
7575
LOGGER.debug("Could not find the span for probeId {}", id);
@@ -89,9 +89,7 @@ public void commit(
8989
span.getLocalRootSpan().setTag(getId(), (String) null); // clear possible span reference
9090
}
9191

92-
private void applySpanOriginTags(AgentSpan candidate, String snapshotId) {
93-
AgentSpan span = findSpan(candidate);
94-
92+
private void applySpanOriginTags(AgentSpan span, String snapshotId) {
9593
List<StackTraceElement> entries = getUserStackFrames();
9694
recordCodeOrigin(span, entries, snapshotId);
9795
recordStackFrames(span, entries, snapshotId);
@@ -117,9 +115,11 @@ private void recordCodeOrigin(
117115

118116
private void recordStackFrames(
119117
AgentSpan span, List<StackTraceElement> entries, String snapshotId) {
120-
for (AgentSpan s :
121-
entrySpanProbe ? asList(span, span.getLocalRootSpan()) : singletonList(span)) {
122-
s.setTag(format(DD_STACK_CODE_ORIGIN_TYPE), entrySpanProbe ? "entry" : "exit");
118+
List<AgentSpan> agentSpans =
119+
entrySpanProbe ? asList(span, span.getLocalRootSpan()) : singletonList(span);
120+
121+
for (AgentSpan s : agentSpans) {
122+
s.setTag(DD_STACK_CODE_ORIGIN_TYPE, entrySpanProbe ? "entry" : "exit");
123123

124124
for (int i = 0; i < entries.size(); i++) {
125125
StackTraceElement info = entries.get(i);

dd-java-agent/agent-debugger/src/test/resources/com/datadog/debugger/CodeOrigin01.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package com.datadog.debugger;
22

3-
import datadog.trace.api.Trace;
43
import datadog.trace.bootstrap.debugger.spanorigin.CodeOriginInfo;
54
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
65
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
76
import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
8-
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.SpanBuilder;
97
import datadog.trace.bootstrap.instrumentation.api.AgentTracer.TracerAPI;
108
import datadog.trace.bootstrap.instrumentation.api.ScopeSource;
119
import datadog.trace.bootstrap.instrumentation.api.Tags;
@@ -62,7 +60,7 @@ public void entry() throws NoSuchMethodException {
6260
private int exit() {
6361
AgentSpan span = newSpan("exit");
6462
try(AgentScope scope = tracerAPI.activateSpan(span, ScopeSource.MANUAL)) {
65-
CodeOriginInfo.exit();
63+
CodeOriginInfo.exit(span);
6664
return 42;
6765
} finally {
6866
span.finish();

dd-java-agent/instrumentation/spring-data-1.8/src/main/java/datadog/trace/instrumentation/springdata/SpringDataDecorator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,6 @@ public void onOperation(
4646
span.setResourceName(spanNameForMethod(method));
4747
}
4848

49-
CodeOriginInfo.exit();
49+
CodeOriginInfo.exit(span);
5050
}
5151
}

0 commit comments

Comments
 (0)