Skip to content

Commit f1faa01

Browse files
authored
Fix mongo latest dep tests (#12331)
1 parent e4752ab commit f1faa01

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/DefaultConnectionPoolTaskInstrumentation.java

+17-2
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,33 @@ public ElementMatcher<TypeDescription> typeMatcher() {
2626
@Override
2727
public void transform(TypeTransformer transformer) {
2828
// outer class this is passed as arg 0 to constructor
29+
// before 5.2.0
2930
transformer.applyAdviceToMethod(
3031
isConstructor().and(takesArgument(2, Consumer.class)),
31-
this.getClass().getName() + "$TaskAdvice");
32+
this.getClass().getName() + "$TaskArg2Advice");
33+
// since 5.2.0
34+
transformer.applyAdviceToMethod(
35+
isConstructor().and(takesArgument(3, Consumer.class)),
36+
this.getClass().getName() + "$TaskArg3Advice");
3237
}
3338

3439
@SuppressWarnings("unused")
35-
public static class TaskAdvice {
40+
public static class TaskArg2Advice {
3641

3742
@Advice.OnMethodEnter(suppress = Throwable.class)
3843
public static void wrapCallback(
3944
@Advice.Argument(value = 2, readOnly = false) Consumer<Object> action) {
4045
action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
4146
}
4247
}
48+
49+
@SuppressWarnings("unused")
50+
public static class TaskArg3Advice {
51+
52+
@Advice.OnMethodEnter(suppress = Throwable.class)
53+
public static void wrapCallback(
54+
@Advice.Argument(value = 3, readOnly = false) Consumer<Object> action) {
55+
action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
56+
}
57+
}
4358
}

instrumentation/mongo/mongo-4.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v4_0/InternalStreamConnectionInstrumentation.java

+41
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,42 @@ public ElementMatcher<TypeDescription> typeMatcher() {
2626

2727
@Override
2828
public void transform(TypeTransformer transformer) {
29+
// before 5.2.0
2930
transformer.applyAdviceToMethod(
3031
isMethod()
3132
.and(named("openAsync"))
3233
.and(takesArgument(0, named("com.mongodb.internal.async.SingleResultCallback"))),
3334
this.getClass().getName() + "$SingleResultCallbackArg0Advice");
35+
// since 5.2.0
36+
transformer.applyAdviceToMethod(
37+
isMethod()
38+
.and(named("openAsync"))
39+
.and(takesArgument(1, named("com.mongodb.internal.async.SingleResultCallback"))),
40+
this.getClass().getName() + "$SingleResultCallbackArg1Advice");
41+
// before 5.2.0
3442
transformer.applyAdviceToMethod(
3543
isMethod()
3644
.and(named("readAsync"))
3745
.and(takesArgument(1, named("com.mongodb.internal.async.SingleResultCallback"))),
3846
this.getClass().getName() + "$SingleResultCallbackArg1Advice");
47+
// since 5.2.0
48+
transformer.applyAdviceToMethod(
49+
isMethod()
50+
.and(named("readAsync"))
51+
.and(takesArgument(2, named("com.mongodb.internal.async.SingleResultCallback"))),
52+
this.getClass().getName() + "$SingleResultCallbackArg2Advice");
53+
// removed in 5.2.0
3954
transformer.applyAdviceToMethod(
4055
isMethod()
4156
.and(named("writeAsync"))
4257
.and(takesArgument(1, named("com.mongodb.internal.async.SingleResultCallback"))),
4358
this.getClass().getName() + "$SingleResultCallbackArg1Advice");
59+
// since 5.2.0, earlier versions instrument writeAsync instead
60+
transformer.applyAdviceToMethod(
61+
isMethod()
62+
.and(named("sendMessageAsync"))
63+
.and(takesArgument(3, named("com.mongodb.internal.async.SingleResultCallback"))),
64+
this.getClass().getName() + "$SingleResultCallbackArg3Advice");
4465
}
4566

4667
@SuppressWarnings("unused")
@@ -62,4 +83,24 @@ public static void wrapCallback(
6283
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
6384
}
6485
}
86+
87+
@SuppressWarnings("unused")
88+
public static class SingleResultCallbackArg2Advice {
89+
90+
@Advice.OnMethodEnter(suppress = Throwable.class)
91+
public static void wrapCallback(
92+
@Advice.Argument(value = 2, readOnly = false) SingleResultCallback<Object> callback) {
93+
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
94+
}
95+
}
96+
97+
@SuppressWarnings("unused")
98+
public static class SingleResultCallbackArg3Advice {
99+
100+
@Advice.OnMethodEnter(suppress = Throwable.class)
101+
public static void wrapCallback(
102+
@Advice.Argument(value = 3, readOnly = false) SingleResultCallback<Object> callback) {
103+
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
104+
}
105+
}
65106
}

0 commit comments

Comments
 (0)