Skip to content

Commit 307c79a

Browse files
authored
Refactor the dd-java-agent build so otel-shim depends on otel-bootstrap (#10810)
Refactor the dd-java-agent build so otel-shim depends on otel-bootstrap. This lets us move more OTel support classes to the shared otel-bootstrap, reducing duplication - we'll only need extra copies of classes when they explicitly refer to OTel classes (in which case we need one copy for our drop-in support and another for auto-instrumentation of the OTel API.) Merge branch 'master' into mcculls/rework-otel-boot-packaging Extra context Merge branch 'master' into mcculls/rework-otel-boot-packaging Co-authored-by: stuart.mcculloch <stuart.mcculloch@datadoghq.com>
1 parent 93c3816 commit 307c79a

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

dd-java-agent/agent-otel/otel-bootstrap/build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ dependencies {
7373
embeddedClasspath group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common-bootstrap', version: "$otelInstrumentationApiVersion-alpha"
7474

7575
compileOnly project(':dd-java-agent:agent-bootstrap')
76-
implementation project(':dd-java-agent:agent-otel:otel-shim')
7776
}
7877

7978
tasks.named("shadowJar", ShadowJar) {
@@ -93,6 +92,7 @@ tasks.named("shadowJar", ShadowJar) {
9392
include 'io/opentelemetry/instrumentation/api/**'
9493
exclude 'io/opentelemetry/instrumentation/api/incubator/log/**'
9594
exclude 'io/opentelemetry/instrumentation/api/incubator/semconv/db/*Sanitizer*'
95+
exclude 'io/opentelemetry/instrumentation/api/incubator/semconv/db/SqlStatementInfo*'
9696
exclude 'io/opentelemetry/instrumentation/api/internal/cache/**'
9797
exclude 'io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier*'
9898
exclude 'io/opentelemetry/instrumentation/api/util/VirtualField*'
@@ -104,15 +104,13 @@ tasks.named("shadowJar", ShadowJar) {
104104
exclude 'io/opentelemetry/javaagent/bootstrap/internal/EmptyInstrumentationConfig*'
105105
exclude 'io/opentelemetry/javaagent/bootstrap/internal/InClassLoaderMatcher*'
106106
exclude 'io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig*'
107-
include 'datadog/opentelemetry/shim/**'
108107
include 'datadog/trace/bootstrap/otel/**'
109108

110109
relocate 'io.opentelemetry.api', 'datadog.trace.bootstrap.otel.api'
111110
relocate 'io.opentelemetry.context', 'datadog.trace.bootstrap.otel.context'
112111
relocate 'io.opentelemetry.semconv', 'datadog.trace.bootstrap.otel.semconv'
113112
relocate 'io.opentelemetry.instrumentation.api', 'datadog.trace.bootstrap.otel.instrumentation.api'
114113
relocate 'io.opentelemetry.javaagent.bootstrap', 'datadog.trace.bootstrap.otel.instrumentation'
115-
relocate 'datadog.opentelemetry.shim', 'datadog.trace.bootstrap.otel.shim'
116114
}
117115

118116
tasks.named("jar", Jar) {

dd-java-agent/agent-otel/otel-shim/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ minimumBranchCoverage = 0.0
66
dependencies {
77
// minimum OpenTelemetry API version this shim is compatible with
88
compileOnly group: 'io.opentelemetry', name: 'opentelemetry-api', version: '1.47.0'
9+
compileOnly project(':dd-java-agent:agent-otel:otel-bootstrap')
910

1011
implementation project(':products:metrics:metrics-api')
1112
implementation project(':internal-api')

dd-java-agent/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ def generalShadowJarConfig(ShadowJar shadowJarTask) {
150150
relocate 'org.snakeyaml.engine', 'datadog.snakeyaml.engine'
151151
relocate 'okhttp3', 'datadog.okhttp3'
152152
relocate 'okio', 'datadog.okio'
153+
154+
// embed an extra copy of our otel-shim for drop-in/extension support
155+
// extensions are remapped to avoid classpath conflicts; use same mapping here
156+
relocate 'io.opentelemetry.api', 'datadog.trace.bootstrap.otel.api'
157+
relocate 'io.opentelemetry.context', 'datadog.trace.bootstrap.otel.context'
158+
relocate 'datadog.opentelemetry.shim', 'datadog.trace.bootstrap.otel.shim'
153159
}
154160

155161
if (!project.hasProperty("disableShadowRelocate") || !disableShadowRelocate) {
@@ -362,6 +368,8 @@ dependencies {
362368
shadowInclude project(path: ':dd-java-agent:agent-bootstrap')
363369
shadowInclude project(path: ':dd-java-agent:agent-debugger:debugger-bootstrap')
364370
shadowInclude project(path: ':dd-java-agent:agent-otel:otel-bootstrap', configuration: 'shadow')
371+
// embed an extra copy of our otel-shim for drop-in/extension support
372+
shadowInclude project(path: ':dd-java-agent:agent-otel:otel-shim')
365373
shadowInclude project(path: ':products:feature-flagging:feature-flagging-bootstrap')
366374

367375
// Includes for the shared internal shadow jar

0 commit comments

Comments
 (0)