Skip to content

Commit a9729e4

Browse files
committed
Disable ServiceTalk instrumentation for versions prior to 0.42.56 to prevent instrumentation errors.
1 parent c789ae5 commit a9729e4

File tree

8 files changed

+37
-45
lines changed

8 files changed

+37
-45
lines changed

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/build.gradle

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ muzzle {
88
module = 'servicetalk-concurrent-api'
99
versions = '[0.42.0,0.42.56)'
1010
}
11-
fail {
12-
group = 'io.servicetalk'
13-
module = 'servicetalk-concurrent-api'
14-
versions = '[0.42.56,]' //TODO what's missing in 0.42.56, so I can add a muzzleCheck
15-
}
1611
}
1712

1813
ext {
@@ -27,8 +22,8 @@ dependencies {
2722
compileOnly group: 'io.servicetalk', name: 'servicetalk-concurrent-api', version: '0.42.0'
2823
compileOnly group: 'io.servicetalk', name: 'servicetalk-context-api', version: '0.42.0'
2924

30-
testImplementation group: 'io.servicetalk', name: 'servicetalk-concurrent-api', version: '0.42.0'
31-
testImplementation group: 'io.servicetalk', name: 'servicetalk-context-api', version: '0.42.0'
25+
testImplementation group: 'io.servicetalk', name: 'servicetalk-concurrent-api', version: '0.42.55'
26+
testImplementation group: 'io.servicetalk', name: 'servicetalk-context-api', version: '0.42.55'
3227

3328
latestDepTestImplementation group: 'io.servicetalk', name: 'servicetalk-concurrent-api', version: '0.42.56'
3429
latestDepTestImplementation group: 'io.servicetalk', name: 'servicetalk-context-api', version: '0.42.56'

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/main/java/datadog/trace/instrumentation/servicetalk/ContextMapInstrumentation.java renamed to dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/main/java/datadog/trace/instrumentation/servicetalk0_42_0/ContextMapInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.instrumentation.servicetalk;
1+
package datadog.trace.instrumentation.servicetalk0_42_0;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
44
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/main/java/datadog/trace/instrumentation/servicetalk/ContextPreservingInstrumentation.java renamed to dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/main/java/datadog/trace/instrumentation/servicetalk0_42_0/ContextPreservingInstrumentation.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.instrumentation.servicetalk;
1+
package datadog.trace.instrumentation.servicetalk0_42_0;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
44

@@ -68,19 +68,5 @@ public static void exit(@Advice.Enter final AgentScope agentScope) {
6868
agentScope.close();
6969
}
7070
}
71-
72-
// TODO muzzle to be applied only for older versions < 0.42.56
73-
public static void muzzleCheck() {
74-
// TODO how to disable this instrumentation for 0.42.56+
75-
// because otherwise it fails to instrument b/o missing "saved" fields
76-
// Also ContextMapInstrumentation shouldn't be applied to 0.42.56+
77-
78-
// We need a class or method that has been deleted in 0.42.56 but was in 0.42.0+
79-
// But there is no such thing comparing 0.42.55 and 0.42.56 of servicetalk-concurrent-api
80-
81-
// Can't check io.servicetalk.concurrent.api.ContextPreservingCallable.saved
82-
// b/o the class is package private and the field is private
83-
84-
}
8571
}
8672
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package datadog.trace.instrumentation.servicetalk0_42_0;
2+
3+
import datadog.trace.agent.tooling.InstrumenterModule;
4+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
5+
import java.util.Collections;
6+
import java.util.Map;
7+
8+
public abstract class ServiceTalkInstrumentation extends InstrumenterModule.Tracing {
9+
10+
public ServiceTalkInstrumentation() {
11+
super("servicetalk", "servicetalk-concurrent");
12+
}
13+
14+
@Override
15+
public Map<String, String> contextStore() {
16+
return Collections.singletonMap(
17+
"io.servicetalk.context.api.ContextMap", AgentSpan.class.getName());
18+
}
19+
20+
@Override
21+
protected boolean defaultEnabled() {
22+
// Instrumentation for ServiceTalk prior to 0.42.56 is disabled by default to avoid the missing
23+
// private field "saved" error.
24+
// This can't be addressed by a muzzle check because there is no decent public change between
25+
// 0.42.55 and 0.42.56.
26+
// For versions prior to 0.42.56, this instrumentation must be explicitly enabled with
27+
// 'DD_INTEGRATION_SERVICETALK_ENABLED=true'.
28+
return false;
29+
}
30+
}

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk/ServiceTalkInstrumentation.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk/ContextPreservingInstrumentation.java renamed to dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk0_42_56/ContextPreservingInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.instrumentation.servicetalk;
1+
package datadog.trace.instrumentation.servicetalk0_42_56;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
44

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk/DefaultAsyncContextProviderInstrumentation.java renamed to dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk0_42_56/DefaultAsyncContextProviderInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.instrumentation.servicetalk;
1+
package datadog.trace.instrumentation.servicetalk0_42_56;
22

33
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf;
44

dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.0/src/main/java/datadog/trace/instrumentation/servicetalk/ServiceTalkInstrumentation.java renamed to dd-java-agent/instrumentation/servicetalk/servicetalk-0.42.56/src/main/java/datadog/trace/instrumentation/servicetalk0_42_56/ServiceTalkInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package datadog.trace.instrumentation.servicetalk;
1+
package datadog.trace.instrumentation.servicetalk0_42_56;
22

33
import datadog.trace.agent.tooling.InstrumenterModule;
44
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;

0 commit comments

Comments
 (0)