Skip to content

Commit 057c48b

Browse files
mccullsPerfectSlayer
authored andcommitted
Fix missing OtelSpanEvent helper when using Event API from inside @WithSpan annotated method (#8019)
1 parent e616734 commit 057c48b

File tree

6 files changed

+26
-4
lines changed

6 files changed

+26
-4
lines changed

dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/main/java/datadog/trace/instrumentation/opentelemetry14/OpenTelemetryInstrumentation.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ public String[] helperClassNames() {
7373
"datadog.opentelemetry.shim.trace.OtelSpanBuilder",
7474
"datadog.opentelemetry.shim.trace.OtelSpanBuilder$1",
7575
"datadog.opentelemetry.shim.trace.OtelSpanContext",
76+
"datadog.opentelemetry.shim.trace.OtelSpanEvent",
7677
"datadog.opentelemetry.shim.trace.OtelSpanEvent$AttributesJsonParser",
7778
"datadog.opentelemetry.shim.trace.OtelSpanLink",
7879
"datadog.opentelemetry.shim.trace.OtelTracer",
7980
"datadog.opentelemetry.shim.trace.OtelTracerBuilder",
8081
"datadog.opentelemetry.shim.trace.OtelTracerProvider",
81-
"datadog.opentelemetry.shim.trace.OtelSpanEvent",
8282
};
8383
}
8484

dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/main/java/datadog/trace/instrumentation/opentelemetry14/context/OpenTelemetryContextInstrumentation.java

+2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ public String[] helperClassNames() {
6767
"datadog.opentelemetry.shim.trace.OtelSpanBuilder",
6868
"datadog.opentelemetry.shim.trace.OtelSpanBuilder$1",
6969
"datadog.opentelemetry.shim.trace.OtelSpanContext",
70+
"datadog.opentelemetry.shim.trace.OtelSpanEvent",
71+
"datadog.opentelemetry.shim.trace.OtelSpanEvent$AttributesJsonParser",
7072
"datadog.opentelemetry.shim.trace.OtelSpanLink",
7173
"datadog.opentelemetry.shim.trace.OtelTracer",
7274
"datadog.opentelemetry.shim.trace.OtelTracerBuilder",

dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/main/java/datadog/trace/instrumentation/opentelemetry14/context/OpenTelemetryContextStorageInstrumentation.java

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ public String[] helperClassNames() {
6868
"datadog.opentelemetry.shim.trace.OtelSpanBuilder",
6969
"datadog.opentelemetry.shim.trace.OtelSpanBuilder$1",
7070
"datadog.opentelemetry.shim.trace.OtelSpanContext",
71+
"datadog.opentelemetry.shim.trace.OtelSpanEvent",
72+
"datadog.opentelemetry.shim.trace.OtelSpanEvent$AttributesJsonParser",
7173
"datadog.opentelemetry.shim.trace.OtelSpanLink",
7274
"datadog.opentelemetry.shim.trace.OtelTracer",
7375
"datadog.opentelemetry.shim.trace.OtelTracerBuilder",

dd-smoke-tests/opentelemetry/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ application {
1111

1212
dependencies {
1313
implementation group: 'io.opentelemetry', name: 'opentelemetry-api', version: '1.4.0'
14+
implementation group: 'io.opentelemetry.instrumentation', name: 'opentelemetry-instrumentation-annotations', version: '1.20.0'
1415
testImplementation project(':dd-smoke-tests')
1516
}
1617

dd-smoke-tests/opentelemetry/src/main/java/datadog/smoketest/opentelemetry/Application.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,26 @@
33
import io.opentelemetry.api.GlobalOpenTelemetry;
44
import io.opentelemetry.api.trace.Span;
55
import io.opentelemetry.api.trace.Tracer;
6+
import io.opentelemetry.instrumentation.annotations.WithSpan;
67

78
/**
89
* This application is a minimalistic application to create a trace with Open Telemetry Tracer API.
910
*/
1011
public class Application {
12+
13+
@WithSpan
14+
static void annotatedSpan() {
15+
Span.current().addEvent("annotated-span-event");
16+
}
17+
1118
public static void main(String[] args) throws InterruptedException {
19+
// Start trace without touching GlobalOpenTelemetry
20+
annotatedSpan();
21+
1222
// Get an Open Telemetry tracer
1323
Tracer tracer = GlobalOpenTelemetry.getTracerProvider().tracerBuilder("smoketests").build();
14-
// Create a trace with few spans
24+
25+
// Start some manual traces
1526
for (int i = 0; i < 10; i++) {
1627
Span span = tracer.spanBuilder("span-" + i).startSpan();
1728
Thread.sleep(20);
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package datadog.smoketest
22

3+
import static java.util.concurrent.TimeUnit.SECONDS
4+
35
class OpenTelemetrySmokeTest extends AbstractSmokeTest {
6+
public static final int TIMEOUT_SECS = 30
7+
48
@Override
59
ProcessBuilder createProcessBuilder() {
610
def jarPath = System.getProperty("datadog.smoketest.shadowJar.path")
711
def command = new ArrayList<String>()
812
command.add(javaPath())
913
command.addAll(defaultJavaProperties)
10-
command.add("-Ddd.integration.opentelemetry.experimental.enabled=true")
14+
command.add("-Ddd.trace.otel.enabled=true")
1115
command.addAll(["-jar", jarPath])
1216

1317
ProcessBuilder processBuilder = new ProcessBuilder(command)
@@ -16,6 +20,8 @@ class OpenTelemetrySmokeTest extends AbstractSmokeTest {
1620

1721
def 'receive trace'() {
1822
expect:
19-
waitForTraceCount(1)
23+
waitForTraceCount(11) // 1 annotated, 10 manual
24+
assert testedProcess.waitFor(TIMEOUT_SECS, SECONDS)
25+
assert testedProcess.exitValue() == 0
2026
}
2127
}

0 commit comments

Comments
 (0)