-
Notifications
You must be signed in to change notification settings - Fork 314
Closed
Labels
type: bugBug report and fixBug report and fix
Description
Tracer Version(s)
1.48.0
Java Version(s)
17.0.9
JVM Vendor
Azul Zing / Zulu
Bug Report
I faced the following runtime error with dd-trace-ot
in Span.log()
Exception in thread "main" java.lang.NoClassDefFoundError: ddtrot/dd/trace/bootstrap/debugger/DebuggerContext
at ddtrot.dd.trace.core.DDSpan.isExceptionReplayEnabled(DDSpan.java:368)
at ddtrot.dd.trace.core.DDSpan.addThrowable(DDSpan.java:360)
at ddtrot.dd.trace.core.DDSpan.addThrowable(DDSpan.java:338)
at ddtrot.dd.trace.core.DDSpan.addThrowable(DDSpan.java:49)
at datadog.opentracing.DefaultLogHandler.extractError(DefaultLogHandler.java:47)
at datadog.opentracing.DefaultLogHandler.log(DefaultLogHandler.java:20)
at datadog.opentracing.OTSpan.log(OTSpan.java:98)
at datadog.opentracing.OTSpan.log(OTSpan.java:17)
at yoyama.App.getGreeting(App.java:26)
at yoyama.App.main(App.java:36)
Caused by: java.lang.ClassNotFoundException: ddtrot.dd.trace.bootstrap.debugger.DebuggerContext
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
The failure happen with dd-trace-ot:1.48.0
or later version.
dd-trace-ot:1.47.3
works.
ddtrot.dd.trace.core.DDSpan.isExceptionReplayEnabled(DDSpan.java:368)
callsDebuggerContext.isExceptionReplayEnabled()
. But DebuggerContext
is defined in dd-java-agent
. Then DDSpan can't load it.
- https://github.com/DataDog/dd-trace-java/blob/v1.48.0/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java#L368
Line 20 in 2623e84
public class DebuggerContext {
Expected Behavior
I would like to stop NoClassDefFoundError
Reproduction Code
App.java:
package yoyama;
import datadog.opentracing.DDTracer;
import io.opentracing.Scope;
import io.opentracing.Span;
import io.opentracing.Tracer;
import io.opentracing.util.GlobalTracer;
import java.util.Map;
public class App {
private final Tracer tracer;
public App(Tracer tracer) {
this.tracer = tracer;
}
public String getGreeting(String name) {
Span span = tracer.buildSpan("getGreeting").start();
try (final Scope scope = tracer.activateSpan(span)) {
if (true) { // Simulate an error condition for testing
throw new RuntimeException("Simulated exception for testing");
}
return "Hello, " + name + "!";
} catch (Exception e) {
span.log(Map.of("event", "error", "error.object", e));
return "Unexpected error";
} finally {
span.finish();
}
}
public static void main(String[] args) {
var tracer = DDTracer.builder().build();
GlobalTracer.registerIfAbsent(tracer);
System.out.println(new App(tracer).getGreeting("World"));
}
}
build.gradle.kts:
plugins {
application
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.datadoghq:dd-trace-ot:1.48.0")
implementation("io.opentracing:opentracing-api:0.33.0")
}
application {
mainClass.set("yoyama.App")
}
Metadata
Metadata
Assignees
Labels
type: bugBug report and fixBug report and fix