Skip to content

Commit 8a36080

Browse files
committed
improve check for overload instrumentation
1 parent 81c02a7 commit 8a36080

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

dd-java-agent/instrumentation/mongo/driver-4.0/src/main/java/datadog/trace/instrumentation/mongo/DefaultServerConnection40Instrumentation.java

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

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpanWithoutScope;
5-
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
65
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
76
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
87
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@@ -12,8 +11,8 @@
1211
import com.mongodb.internal.connection.DefaultServerConnection;
1312
import datadog.trace.agent.tooling.Instrumenter;
1413
import datadog.trace.agent.tooling.InstrumenterModule;
14+
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
1515
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
16-
import datadog.trace.bootstrap.instrumentation.dbm.SharedDBCommenter;
1716
import net.bytebuddy.asm.Advice;
1817
import org.bson.BsonDocument;
1918

@@ -33,9 +32,10 @@ public String instrumentedType() {
3332
@Override
3433
public String[] helperClassNames() {
3534
return new String[] {
36-
SharedDBCommenter.class.getName(),
37-
MongoCommentInjector.class.getName(),
38-
MongoDecorator.class.getName(),
35+
"datadog.trace.bootstrap.instrumentation.dbm.SharedDBCommenter",
36+
packageName + ".MongoDecorator",
37+
packageName + ".MongoCommentInjector",
38+
packageName + ".BsonScrubber",
3939
};
4040
}
4141

@@ -66,9 +66,7 @@ public static void onEnter(
6666
return;
6767
}
6868

69-
AgentSpan existingSpan = activeSpan();
70-
if (existingSpan != null
71-
&& MongoDecorator.OPERATION_NAME.equals(existingSpan.getOperationName())) {
69+
if (CallDepthThreadLocalMap.incrementCallDepth(DefaultServerConnection.class) > 0) {
7270
// we don't re-run the advice if the command goes through multiple overloads
7371
return;
7472
}
@@ -88,5 +86,14 @@ public static void onEnter(
8886
originalBsonDocument = MongoCommentInjector.injectComment(dbmComment, originalBsonDocument);
8987
}
9088
}
89+
90+
@Advice.OnMethodExit(onThrowable = Throwable.class, suppress = Throwable.class)
91+
public static void onExit() {
92+
if (!MongoCommentInjector.INJECT_COMMENT) {
93+
return;
94+
}
95+
96+
CallDepthThreadLocalMap.decrementCallDepth(DefaultServerConnection.class);
97+
}
9198
}
9299
}

0 commit comments

Comments
 (0)