Skip to content

Commit 7c62e10

Browse files
committed
Do not use advice class names in Lettuce instrumentation directly
Since this leads to Java8 code loaded into Java7 JVM in tests. Insted reference class names by string.
1 parent 46428dc commit 7c62e10

File tree

3 files changed

+24
-22
lines changed

3 files changed

+24
-22
lines changed

dd-java-agent/instrumentation/lettuce-5/src/main/java/datadog/trace/instrumentation/lettuce/LettuceAsyncCommandsInstrumentation.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
@AutoService(Instrumenter.class)
1313
public class LettuceAsyncCommandsInstrumentation extends Instrumenter.Default {
1414

15+
public static final String PACKAGE =
16+
LettuceAsyncCommandsInstrumentation.class.getPackage().getName();
17+
1518
public LettuceAsyncCommandsInstrumentation() {
1619
super("lettuce", "lettuce-5-async");
1720
}
@@ -29,9 +32,7 @@ public ElementMatcher<? super ClassLoader> classLoaderMatcher() {
2932
@Override
3033
public String[] helperClassNames() {
3134
return new String[] {
32-
LettuceAsyncCommandsInstrumentation.class.getPackage().getName() + ".LettuceAsyncBiFunction",
33-
LettuceAsyncCommandsInstrumentation.class.getPackage().getName()
34-
+ ".LettuceInstrumentationUtil"
35+
PACKAGE + ".LettuceAsyncBiFunction", PACKAGE + ".LettuceInstrumentationUtil"
3536
};
3637
}
3738

@@ -42,7 +43,8 @@ public Map<ElementMatcher, String> transformers() {
4243
isMethod()
4344
.and(named("dispatch"))
4445
.and(takesArgument(0, named("io.lettuce.core.protocol.RedisCommand"))),
45-
LettuceAsyncCommandsAdvice.class.getName());
46+
// Cannot reference class directly here because this would lead to class load failure on Java7
47+
PACKAGE + ".LettuceAsyncCommandsAdvice");
4648
return transformers;
4749
}
4850
}

dd-java-agent/instrumentation/lettuce-5/src/main/java/datadog/trace/instrumentation/lettuce/LettuceClientInstrumentation.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
@AutoService(Instrumenter.class)
1313
public final class LettuceClientInstrumentation extends Instrumenter.Default {
1414

15+
public static final String PACKAGE = LettuceClientInstrumentation.class.getPackage().getName();
16+
1517
private static final String[] HELPER_CLASS_NAMES =
1618
new String[] {
1719
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
1820
+ ".LettuceInstrumentationUtil",
19-
LettuceClientInstrumentation.class.getPackage().getName() + ".LettuceAsyncBiFunction"
21+
PACKAGE + ".LettuceAsyncBiFunction"
2022
};
2123

2224
public LettuceClientInstrumentation() {
@@ -48,7 +50,8 @@ public Map<ElementMatcher, String> transformers() {
4850
.and(nameStartsWith("connect"))
4951
.and(nameEndsWith("Async"))
5052
.and(takesArgument(1, named("io.lettuce.core.RedisURI"))),
51-
ConnectionFutureAdvice.class.getName());
53+
// Cannot reference class directly here because this would lead to class load failure on Java7
54+
PACKAGE + ".ConnectionFutureAdvice");
5255
return transformers;
5356
}
5457
}

dd-java-agent/instrumentation/lettuce-5/src/main/java/datadog/trace/instrumentation/lettuce/LettuceReactiveCommandsInstrumentation.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55

66
import com.google.auto.service.AutoService;
77
import datadog.trace.agent.tooling.Instrumenter;
8-
import datadog.trace.instrumentation.lettuce.rx.LettuceFluxCreationAdvice;
9-
import datadog.trace.instrumentation.lettuce.rx.LettuceMonoCreationAdvice;
108
import java.util.HashMap;
119
import java.util.Map;
1210
import net.bytebuddy.matcher.ElementMatcher;
1311

1412
@AutoService(Instrumenter.class)
1513
public class LettuceReactiveCommandsInstrumentation extends Instrumenter.Default {
1614

15+
public static final String PACKAGE =
16+
LettuceReactiveCommandsInstrumentation.class.getPackage().getName();
17+
1718
public LettuceReactiveCommandsInstrumentation() {
1819
super("lettuce", "lettuce-5-rx");
1920
}
@@ -31,18 +32,12 @@ public ElementMatcher<? super ClassLoader> classLoaderMatcher() {
3132
@Override
3233
public String[] helperClassNames() {
3334
return new String[] {
34-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
35-
+ ".LettuceInstrumentationUtil",
36-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
37-
+ ".rx.LettuceMonoCreationAdvice",
38-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
39-
+ ".rx.LettuceMonoDualConsumer",
40-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
41-
+ ".rx.LettuceFluxCreationAdvice",
42-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
43-
+ ".rx.LettuceFluxTerminationRunnable",
44-
LettuceReactiveCommandsInstrumentation.class.getPackage().getName()
45-
+ ".rx.LettuceFluxTerminationRunnable$FluxOnSubscribeConsumer"
35+
PACKAGE + ".LettuceInstrumentationUtil",
36+
PACKAGE + ".rx.LettuceMonoCreationAdvice",
37+
PACKAGE + ".rx.LettuceMonoDualConsumer",
38+
PACKAGE + ".rx.LettuceFluxCreationAdvice",
39+
PACKAGE + ".rx.LettuceFluxTerminationRunnable",
40+
PACKAGE + ".rx.LettuceFluxTerminationRunnable$FluxOnSubscribeConsumer"
4641
};
4742
}
4843

@@ -54,14 +49,16 @@ public Map<ElementMatcher, String> transformers() {
5449
.and(named("createMono"))
5550
.and(takesArgument(0, named("java.util.function.Supplier")))
5651
.and(returns(named("reactor.core.publisher.Mono"))),
57-
LettuceMonoCreationAdvice.class.getName());
52+
// Cannot reference class directly here because this would lead to class load failure on Java7
53+
PACKAGE + ".rx.LettuceMonoCreationAdvice");
5854
transformers.put(
5955
isMethod()
6056
.and(nameStartsWith("create"))
6157
.and(nameEndsWith("Flux"))
6258
.and(takesArgument(0, named("java.util.function.Supplier")))
6359
.and(returns(named(("reactor.core.publisher.Flux")))),
64-
LettuceFluxCreationAdvice.class.getName());
60+
// Cannot reference class directly here because this would lead to class load failure on Java7
61+
PACKAGE + ".rx.LettuceFluxCreationAdvice");
6562

6663
return transformers;
6764
}

0 commit comments

Comments
 (0)