Skip to content

Commit 6313b39

Browse files
authored
make mongo indy-ready (#14647)
1 parent 4595a3a commit 6313b39

File tree

11 files changed

+105
-54
lines changed

11 files changed

+105
-54
lines changed

instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/BaseClusterInstrumentation.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1717
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1818
import net.bytebuddy.asm.Advice;
19+
import net.bytebuddy.asm.Advice.AssignReturned;
20+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1921
import net.bytebuddy.description.type.TypeDescription;
2022
import net.bytebuddy.matcher.ElementMatcher;
2123

@@ -41,10 +43,11 @@ public void transform(TypeTransformer transformer) {
4143
@SuppressWarnings("unused")
4244
public static class SingleResultCallbackArg1Advice {
4345

46+
@AssignReturned.ToArguments(@ToArgument(1))
4447
@Advice.OnMethodEnter(suppress = Throwable.class)
45-
public static void wrapCallback(
46-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
47-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
48+
public static SingleResultCallback<Object> wrapCallback(
49+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
50+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
4851
}
4952
}
5053
}

instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/InternalStreamConnectionInstrumentation.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
18+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1719
import net.bytebuddy.description.type.TypeDescription;
1820
import net.bytebuddy.matcher.ElementMatcher;
1921

@@ -46,20 +48,22 @@ public void transform(TypeTransformer transformer) {
4648
@SuppressWarnings("unused")
4749
public static class SingleResultCallbackArg0Advice {
4850

51+
@AssignReturned.ToArguments(@ToArgument(0))
4952
@Advice.OnMethodEnter(suppress = Throwable.class)
50-
public static void wrapCallback(
51-
@Advice.Argument(value = 0, readOnly = false) SingleResultCallback<Object> callback) {
52-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
53+
public static SingleResultCallback<Object> wrapCallback(
54+
@Advice.Argument(0) SingleResultCallback<Object> callback) {
55+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
5356
}
5457
}
5558

5659
@SuppressWarnings("unused")
5760
public static class SingleResultCallbackArg1Advice {
5861

62+
@AssignReturned.ToArguments(@ToArgument(1))
5963
@Advice.OnMethodEnter(suppress = Throwable.class)
60-
public static void wrapCallback(
61-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
62-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
64+
public static SingleResultCallback<Object> wrapCallback(
65+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
66+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
6367
}
6468
}
6569
}

instrumentation/mongo/mongo-3.7/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongo/v3_7/MongoClientInstrumentationModule.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class MongoClientInstrumentationModule extends InstrumentationModule {
19+
public class MongoClientInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921

2022
public MongoClientInstrumentationModule() {
2123
super("mongo", "mongo-3.7");
@@ -34,4 +36,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
3436
new InternalStreamConnectionInstrumentation(),
3537
new BaseClusterInstrumentation());
3638
}
39+
40+
@Override
41+
public boolean isIndyReady() {
42+
return true;
43+
}
3744
}

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1717
import net.bytebuddy.asm.Advice;
18+
import net.bytebuddy.asm.Advice.AssignReturned;
19+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1820
import net.bytebuddy.description.type.TypeDescription;
1921
import net.bytebuddy.matcher.ElementMatcher;
2022

@@ -47,20 +49,22 @@ public void transform(TypeTransformer transformer) {
4749
@SuppressWarnings("unused")
4850
public static class SingleResultCallbackArg1Advice {
4951

52+
@AssignReturned.ToArguments(@ToArgument(1))
5053
@Advice.OnMethodEnter(suppress = Throwable.class)
51-
public static void wrapCallback(
52-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
53-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
54+
public static SingleResultCallback<Object> wrapCallback(
55+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
56+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
5457
}
5558
}
5659

5760
@SuppressWarnings("unused")
5861
public static class SingleResultCallbackArg2Advice {
5962

63+
@AssignReturned.ToArguments(@ToArgument(2))
6064
@Advice.OnMethodEnter(suppress = Throwable.class)
61-
public static void wrapCallback(
62-
@Advice.Argument(value = 2, readOnly = false) SingleResultCallback<Object> callback) {
63-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
65+
public static SingleResultCallback<Object> wrapCallback(
66+
@Advice.Argument(2) SingleResultCallback<Object> callback) {
67+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
6468
}
6569
}
6670
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import net.bytebuddy.asm.Advice;
16+
import net.bytebuddy.asm.Advice.AssignReturned;
17+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1618
import net.bytebuddy.description.type.TypeDescription;
1719
import net.bytebuddy.matcher.ElementMatcher;
1820

@@ -34,10 +36,11 @@ public void transform(TypeTransformer transformer) {
3436
@SuppressWarnings("unused")
3537
public static class SingleResultCallbackAdvice {
3638

39+
@AssignReturned.ToArguments(@ToArgument(0))
3740
@Advice.OnMethodEnter(suppress = Throwable.class)
38-
public static void wrapCallback(
39-
@Advice.Argument(value = 0, readOnly = false) SingleResultCallback<Object> callback) {
40-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
41+
public static SingleResultCallback<Object> wrapCallback(
42+
@Advice.Argument(0) SingleResultCallback<Object> callback) {
43+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
4144
}
4245
}
4346
}

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1515
import java.util.function.Consumer;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
18+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1719
import net.bytebuddy.description.type.TypeDescription;
1820
import net.bytebuddy.matcher.ElementMatcher;
1921

@@ -43,30 +45,30 @@ public void transform(TypeTransformer transformer) {
4345
@SuppressWarnings("unused")
4446
public static class TaskArg2Advice {
4547

48+
@AssignReturned.ToArguments(@ToArgument(2))
4649
@Advice.OnMethodEnter(suppress = Throwable.class)
47-
public static void wrapCallback(
48-
@Advice.Argument(value = 2, readOnly = false) Consumer<Object> action) {
49-
action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
50+
public static Consumer<Object> wrapCallback(@Advice.Argument(2) Consumer<Object> action) {
51+
return new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
5052
}
5153
}
5254

5355
@SuppressWarnings("unused")
5456
public static class TaskArg3Advice {
5557

58+
@AssignReturned.ToArguments(@ToArgument(3))
5659
@Advice.OnMethodEnter(suppress = Throwable.class)
57-
public static void wrapCallback(
58-
@Advice.Argument(value = 3, readOnly = false) Consumer<Object> action) {
59-
action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
60+
public static Consumer<Object> wrapCallback(@Advice.Argument(3) Consumer<Object> action) {
61+
return new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
6062
}
6163
}
6264

6365
@SuppressWarnings("unused")
6466
public static class TaskArg4Advice {
6567

68+
@AssignReturned.ToArguments(@ToArgument(4))
6669
@Advice.OnMethodEnter(suppress = Throwable.class)
67-
public static void wrapCallback(
68-
@Advice.Argument(value = 4, readOnly = false) Consumer<Object> action) {
69-
action = new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
70+
public static Consumer<Object> wrapCallback(@Advice.Argument(4) Consumer<Object> action) {
71+
return new TaskWrapper(Java8BytecodeBridge.currentContext(), action);
7072
}
7173
}
7274
}

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

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
18+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1719
import net.bytebuddy.description.type.TypeDescription;
1820
import net.bytebuddy.matcher.ElementMatcher;
1921

@@ -67,40 +69,44 @@ public void transform(TypeTransformer transformer) {
6769
@SuppressWarnings("unused")
6870
public static class SingleResultCallbackArg0Advice {
6971

72+
@AssignReturned.ToArguments(@ToArgument(0))
7073
@Advice.OnMethodEnter(suppress = Throwable.class)
71-
public static void wrapCallback(
72-
@Advice.Argument(value = 0, readOnly = false) SingleResultCallback<Object> callback) {
73-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
74+
public static SingleResultCallback<Object> wrapCallback(
75+
@Advice.Argument(0) SingleResultCallback<Object> callback) {
76+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
7477
}
7578
}
7679

7780
@SuppressWarnings("unused")
7881
public static class SingleResultCallbackArg1Advice {
7982

83+
@AssignReturned.ToArguments(@ToArgument(1))
8084
@Advice.OnMethodEnter(suppress = Throwable.class)
81-
public static void wrapCallback(
82-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
83-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
85+
public static SingleResultCallback<Object> wrapCallback(
86+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
87+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
8488
}
8589
}
8690

8791
@SuppressWarnings("unused")
8892
public static class SingleResultCallbackArg2Advice {
8993

94+
@AssignReturned.ToArguments(@ToArgument(2))
9095
@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);
96+
public static SingleResultCallback<Object> wrapCallback(
97+
@Advice.Argument(2) SingleResultCallback<Object> callback) {
98+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
9499
}
95100
}
96101

97102
@SuppressWarnings("unused")
98103
public static class SingleResultCallbackArg3Advice {
99104

105+
@AssignReturned.ToArguments(@ToArgument(3))
100106
@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);
107+
public static SingleResultCallback<Object> wrapCallback(
108+
@Advice.Argument(3) SingleResultCallback<Object> callback) {
109+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
104110
}
105111
}
106112
}

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import com.google.auto.service.AutoService;
1212
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1313
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
14+
import io.opentelemetry.javaagent.extension.instrumentation.internal.ExperimentalInstrumentationModule;
1415
import java.util.List;
1516
import net.bytebuddy.matcher.ElementMatcher;
1617

1718
@AutoService(InstrumentationModule.class)
18-
public class MongoClientInstrumentationModule extends InstrumentationModule {
19+
public class MongoClientInstrumentationModule extends InstrumentationModule
20+
implements ExperimentalInstrumentationModule {
1921

2022
public MongoClientInstrumentationModule() {
2123
super("mongo", "mongo-4.0");
@@ -36,4 +38,9 @@ public List<TypeInstrumentation> typeInstrumentations() {
3638
new DefaultConnectionPoolTaskInstrumentation(),
3739
new AsyncWorkManagerInstrumentation());
3840
}
41+
42+
@Override
43+
public boolean isIndyReady() {
44+
return true;
45+
}
3946
}

instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/BaseClusterInstrumentation.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1616
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1717
import net.bytebuddy.asm.Advice;
18+
import net.bytebuddy.asm.Advice.AssignReturned;
19+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1820
import net.bytebuddy.description.type.TypeDescription;
1921
import net.bytebuddy.matcher.ElementMatcher;
2022

@@ -39,10 +41,11 @@ public void transform(TypeTransformer transformer) {
3941
@SuppressWarnings("unused")
4042
public static class SingleResultCallbackArg1Advice {
4143

44+
@AssignReturned.ToArguments(@ToArgument(1))
4245
@Advice.OnMethodEnter(suppress = Throwable.class)
43-
public static void wrapCallback(
44-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
45-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
46+
public static SingleResultCallback<Object> wrapCallback(
47+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
48+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
4649
}
4750
}
4851
}

instrumentation/mongo/mongo-async-3.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mongoasync/v3_3/InternalStreamConnectionInstrumentation.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1515
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1616
import net.bytebuddy.asm.Advice;
17+
import net.bytebuddy.asm.Advice.AssignReturned;
18+
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
1719
import net.bytebuddy.description.type.TypeDescription;
1820
import net.bytebuddy.matcher.ElementMatcher;
1921

@@ -46,30 +48,33 @@ public void transform(TypeTransformer transformer) {
4648
@SuppressWarnings("unused")
4749
public static class SingleResultCallbackArg0Advice {
4850

51+
@AssignReturned.ToArguments(@ToArgument(0))
4952
@Advice.OnMethodEnter(suppress = Throwable.class)
50-
public static void wrapCallback(
51-
@Advice.Argument(value = 0, readOnly = false) SingleResultCallback<Object> callback) {
52-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
53+
public static SingleResultCallback<Object> wrapCallback(
54+
@Advice.Argument(0) SingleResultCallback<Object> callback) {
55+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
5356
}
5457
}
5558

5659
@SuppressWarnings("unused")
5760
public static class SingleResultCallbackArg1Advice {
5861

62+
@AssignReturned.ToArguments(@ToArgument(1))
5963
@Advice.OnMethodEnter(suppress = Throwable.class)
60-
public static void wrapCallback(
61-
@Advice.Argument(value = 1, readOnly = false) SingleResultCallback<Object> callback) {
62-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
64+
public static SingleResultCallback<Object> wrapCallback(
65+
@Advice.Argument(1) SingleResultCallback<Object> callback) {
66+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
6367
}
6468
}
6569

6670
@SuppressWarnings("unused")
6771
public static class SingleResultCallbackArg2Advice {
6872

73+
@AssignReturned.ToArguments(@ToArgument(2))
6974
@Advice.OnMethodEnter(suppress = Throwable.class)
70-
public static void wrapCallback(
71-
@Advice.Argument(value = 2, readOnly = false) SingleResultCallback<Object> callback) {
72-
callback = new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
75+
public static SingleResultCallback<Object> wrapCallback(
76+
@Advice.Argument(2) SingleResultCallback<Object> callback) {
77+
return new SingleResultCallbackWrapper(Java8BytecodeBridge.currentContext(), callback);
7378
}
7479
}
7580
}

0 commit comments

Comments
 (0)