Skip to content

Commit c6e7fca

Browse files
authored
Use dd-instrument-java's embedded copy of asm across the whole dd-java-agent jar (#9916)
1 parent 4fb1b2e commit c6e7fca

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

dd-java-agent/agent-otel/otel-tooling/src/main/java/datadog/opentelemetry/tooling/OtelInstrumentationMapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ static final class Renamer extends Remapper {
141141
RENAMED_PACKAGES.put(
142142
"io/opentelemetry/javaagent/bootstrap/", "datadog/trace/bootstrap/otel/instrumentation/");
143143

144-
RENAMED_PACKAGES.put("org/objectweb/asm/", "net/bytebuddy/jar/asm/");
144+
// we want to keep this package unchanged so it matches against any unshaded extensions
145+
// dropped in at runtime; use replace to stop it being transformed by the shadow plugin
146+
RENAMED_PACKAGES.put("org|objectweb|asm|".replace('|', '/'), "net/bytebuddy/jar/asm/");
145147
}
146148

147149
@Override

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/ExtensionHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,9 @@ protected byte[] doMapBytecode(String unused) {
126126
/** Maps logging references in the extension to use the tracer's embedded logger. */
127127
public static final Function<String, String> MAP_LOGGING =
128128
new Function<String, String>() {
129-
// substring stops string literal from being changed by shadow plugin
130-
private final String ORG_SLF4J = "_org/slf4j/".substring(1);
129+
// we want to keep this package unchanged so it matches against any unshaded extensions
130+
// dropped in at runtime; use replace to stop it being transformed by the shadow plugin
131+
private final String ORG_SLF4J = "org|slf4j|".replace('|', '/');
131132

132133
@Override
133134
public String apply(String internalName) {

dd-java-agent/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ def generalShadowJarConfig(ShadowJar shadowJarTask) {
9393
// patch JFFI loading mechanism to maintain isolation
9494
exclude '**/com/kenai/jffi/Init.class'
9595
relocate('com.kenai.jffi.Init', 'com.kenai.jffi.PatchInit')
96+
// use dd-instrument-java's embedded copy of asm
97+
relocate('org.objectweb.asm', 'datadog.instrument.asm')
9698

9799
// Minimize and relocate the airlift compressor dependency for ZSTD
98100
exclude '**/io/airlift/compress/bzip2/**'
@@ -205,6 +207,8 @@ def sharedShadowJar = tasks.register('sharedShadowJar', ShadowJar) {
205207
exclude(project(':utils:config-utils'))
206208
exclude(project(':utils:time-utils'))
207209
exclude(dependency('org.slf4j::'))
210+
// use dd-instrument-java's embedded copy of asm
211+
exclude(dependency('org.ow2.asm:asm:'))
208212
}
209213
}
210214
includeShadowJar(sharedShadowJar, 'shared', includedJarFileTree)

dd-trace-ot/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>("shadowJ
120120
exclude(dependency("io.opentracing.contrib:"))
121121
exclude(dependency("org.slf4j:"))
122122
exclude(dependency("com.github.jnr:"))
123+
// indirect dependency of JNR, no need to embed
124+
exclude(dependency("org.ow2.asm:"))
123125
}
124126

125127
relocate("com.", "ddtrot.com.") {

0 commit comments

Comments
 (0)