Skip to content

Commit 0c80f7d

Browse files
committed
Install AsyncResult extensions during class initialization
1 parent 634bf63 commit 0c80f7d

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

dd-java-agent/instrumentation/guava-10/src/main/java/datadog/trace/instrumentation/guava10/ListenableFutureInstrumentation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope;
55
import static java.util.Collections.singletonMap;
6-
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
6+
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
77
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
88

99
import com.google.auto.service.AutoService;
@@ -48,13 +48,14 @@ public Map<String, String> contextStore() {
4848
@Override
4949
public void methodAdvice(MethodTransformer transformer) {
5050
transformer.applyAdvice(
51-
isConstructor(), ListenableFutureInstrumentation.class.getName() + "$AbstractFutureAdvice");
51+
isTypeInitializer(),
52+
ListenableFutureInstrumentation.class.getName() + "$InstallExtensionAdvice");
5253
transformer.applyAdvice(
5354
named("addListener").and(takesArguments(Runnable.class, Executor.class)),
5455
ListenableFutureInstrumentation.class.getName() + "$AddListenerAdvice");
5556
}
5657

57-
public static class AbstractFutureAdvice {
58+
public static class InstallExtensionAdvice {
5859
@Advice.OnMethodExit(suppress = Throwable.class)
5960
public static void init() {
6061
GuavaAsyncResultExtension.initialize();

dd-java-agent/instrumentation/reactive-streams/src/main/java/datadog/trace/instrumentation/reactivestreams/PublisherInstrumentation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
77
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan;
8-
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
98
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
109
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
10+
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
1111
import static net.bytebuddy.matcher.ElementMatchers.not;
1212
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1313
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
@@ -69,7 +69,8 @@ public String[] helperClassNames() {
6969

7070
@Override
7171
public void methodAdvice(MethodTransformer transformer) {
72-
transformer.applyAdvice(isConstructor(), this.getClass().getName() + "$PublisherAdvice");
72+
transformer.applyAdvice(
73+
isTypeInitializer(), this.getClass().getName() + "$InstallExtensionAdvice");
7374
transformer.applyAdvice(
7475
isMethod()
7576
.and(not(isStatic()))
@@ -79,7 +80,7 @@ public void methodAdvice(MethodTransformer transformer) {
7980
getClass().getName() + "$PublisherSubscribeAdvice");
8081
}
8182

82-
public static class PublisherAdvice {
83+
public static class InstallExtensionAdvice {
8384
@Advice.OnMethodExit(suppress = Throwable.class)
8485
public static void init() {
8586
ReactiveStreamsAsyncResultExtension.initialize();

dd-java-agent/instrumentation/reactor-core-3.1/src/main/java/datadog/trace/instrumentation/reactor/core/BlockingPublisherInstrumentation.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.nameStartsWith;
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
66
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan;
7-
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
87
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
8+
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
99

1010
import com.google.auto.service.AutoService;
1111
import datadog.trace.agent.tooling.Instrumenter;
@@ -42,7 +42,7 @@ public String[] helperClassNames() {
4242

4343
@Override
4444
public void methodAdvice(MethodTransformer transformer) {
45-
transformer.applyAdvice(isConstructor(), getClass().getName() + "$AsyncExtensionInstallAdvice");
45+
transformer.applyAdvice(isTypeInitializer(), getClass().getName() + "$InstallExtensionAdvice");
4646
transformer.applyAdvice(
4747
isMethod().and(nameStartsWith("block")), getClass().getName() + "$BlockingAdvice");
4848
}
@@ -62,6 +62,13 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
6262
return hasSuperType(namedOneOf("reactor.core.publisher.Mono", "reactor.core.publisher.Flux"));
6363
}
6464

65+
public static class InstallExtensionAdvice {
66+
@Advice.OnMethodExit(suppress = Throwable.class)
67+
public static void init() {
68+
ReactorAsyncResultExtension.initialize();
69+
}
70+
}
71+
6572
public static class BlockingAdvice {
6673
@Advice.OnMethodEnter(suppress = Throwable.class)
6774
public static AgentScope before(@Advice.This final Publisher self) {
@@ -79,11 +86,4 @@ public static void after(@Advice.Enter final AgentScope scope) {
7986
}
8087
}
8188
}
82-
83-
public static class AsyncExtensionInstallAdvice {
84-
@Advice.OnMethodExit(suppress = Throwable.class)
85-
public static void init() {
86-
ReactorAsyncResultExtension.initialize();
87-
}
88-
}
8989
}

dd-java-agent/instrumentation/rxjava-2/src/main/java/datadog/trace/instrumentation/rxjava2/RxJavaPluginsInstrumentation.java

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

3-
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
3+
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
44

55
import com.google.auto.service.AutoService;
66
import datadog.trace.agent.tooling.Instrumenter;
@@ -36,10 +36,10 @@ public String[] helperClassNames() {
3636

3737
@Override
3838
public void methodAdvice(MethodTransformer transformer) {
39-
transformer.applyAdvice(isMethod(), getClass().getName() + "$RxJavaPluginsAdvice");
39+
transformer.applyAdvice(isTypeInitializer(), getClass().getName() + "$InstallExtensionAdvice");
4040
}
4141

42-
public static class RxJavaPluginsAdvice {
42+
public static class InstallExtensionAdvice {
4343
@Advice.OnMethodExit(suppress = Throwable.class)
4444
public static void init() {
4545
RxJavaAsyncResultExtension.initialize();

0 commit comments

Comments
 (0)