dd-trace-ot 1.67.x: NoClassDefFoundError `ddtrot/dd/trace/api/llmobs/LLMObs`
Mantenedores costumam responder em até 2 dias
@amarziali já está trabalhando nisso.
Desde 14/10/2026.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Tracer Version(s)
1.67.0+
Java Version(s)
25
JVM Vendor
Oracle JDK
Bug Report
Since 1.67.0, DDTracer.inject(...) from dd-trace-ot throws NoClassDefFoundError for ddtrot/dd/trace/api/llmobs/LLMObs. 1.66.0 is fine. dd-trace-api is on the classpath at the same version as dd-trace-ot.
java.lang.NoClassDefFoundError: ddtrot/dd/trace/api/llmobs/LLMObs
at ddtrot.dd.trace.core.propagation.DatadogHttpCodec$Injector.inject(DatadogHttpCodec.java:86)
at ddtrot.dd.trace.core.propagation.HttpCodec$CompoundInjector.inject(HttpCodec.java:194)
at ddtrot.dd.trace.core.propagation.TracingPropagator.inject(TracingPropagator.java:58)
at ddtrot.dd.context.propagation.CompositePropagator.inject(CompositePropagator.java:18)
at datadog.opentracing.DDTracer.inject(DDTracer.java:490)
Caused by: java.lang.ClassNotFoundException: ddtrot.dd.trace.api.llmobs.LLMObs
Analysis
This is a regression from #12416 (9a03e95e32), which makes DatadogHttpCodec$Injector.inject call LLMObsInternal.propagationValuesFor(...). LLMObsInternal (internal-api) extends LLMObs (dd-trace-api).
In dd-trace-ot/build.gradle.kts, the shadow jar excludes :dd-trace-api and relocates datadog. to ddtrot.dd.. The exclude %regex[datadog/trace/api/(?!Functions|Endpoint)[^/]*] only covers classes directly under datadog/trace/api/, so datadog.trace.api.llmobs.* is relocated. The resulting dd-trace-ot-1.67.1.jar contains ddtrot/dd/trace/api/llmobs/LLMObsInternal.class (superclass ddtrot.dd.trace.api.llmobs.LLMObs) but no LLMObs.class. dd-trace-api only provides the unrelocated datadog/trace/api/llmobs/LLMObs.
Possible fix (untested): add exclude("datadog.trace.api.llmobs.*") to the relocate("datadog.", "ddtrot.dd.") block.
Environment
dd-trace-otanddd-trace-api1.67.1 (also 1.67.0)- JDK 25 (Temurin), OpenTracing 0.32.0
Expected Behavior
DDTracer.inject(...) injects the Datadog headers into the carrier without error, as it does in 1.66.0:
injected headers: {x-datadog-parent-id=..., x-datadog-sampling-priority=1, tracestate=dd=s:1;..., x-datadog-tags=_dd.p.dm=-1,...}
### Reproduction Code
Only `dd-trace-ot` and `dd-trace-api` are needed. Change `dd.version` to `1.66.0` to see it work.
`pom.xml`:
```xml
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>repro</groupId>
<artifactId>dd-ot-llmobs-repro</artifactId>
<version>1.0</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
<dd.version>1.67.1</dd.version>
</properties>
<dependencies>
<dependency>
<groupId>com.datadoghq</groupId>
<artifactId>dd-trace-ot</artifactId>
<version>${dd.version}</version>
</dependency>
<dependency>
<groupId>com.datadoghq</groupId>
<artifactId>dd-trace-api</artifactId>
<version>${dd.version}</version>
</dependency>
</dependencies>
</project>
src/main/java/repro/Main.java:
package repro;
import datadog.opentracing.DDTracer;
import io.opentracing.Span;
import io.opentracing.propagation.Format;
import io.opentracing.propagation.TextMapAdapter;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
System.setProperty("dd.writer.type", "LoggingWriter");
DDTracer tracer = DDTracer.builder().serviceName("repro").build();
Span span = tracer.buildSpan("op").start();
Map<String, String> headers = new HashMap<>();
tracer.inject(span.context(), Format.Builtin.HTTP_HEADERS, new TextMapAdapter(headers));
System.out.println("injected headers: " + headers);
span.finish();
tracer.close();
}
}
Run:
mvn -q -B compile
mvn -q -B dependency:build-classpath -Dmdep.outputFile=cp.txt
java -cp target/classes:$(cat cp.txt) repro.Main
(mvn exec:java also fails, but reports LLMObsInternal as the missing class because it wraps the error.)
- Linguagem predominante
- Java
- Estrelas
- 736
- Forks
- 364
- Merge médio
- 3d 9h
- PRs com merge (30d)
- 219
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de DataDog/dd-trace-java
-
type: bug report
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
DataDog/dd-trace-java#12818 · 4 reações ·
Mantenedores costumam responder em até 2 dias
-
Update DEFAULT_HTTP_CLIENT_ERROR_STATUSES to include 5xx status codesTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertatype: feature request
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 70/100
DataDog/dd-trace-java#10245 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
type: feature request
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
DataDog/dd-trace-java#12838 · 2 comentários ·
Mantenedores costumam responder em até 2 dias
-
Startup ~2x slower with AOT class linking: agent retransforms ~22k preloaded classes (JDK 25, 1.67.0)Talvez já em andamento @mcculls assumiu há 9 dias. Abertatype: bug report
DataDog/dd-trace-java#12795 · 6 comentários · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
gRPC server instrumentations (grpc-1.5, armeria-grpc) don't make extracted W3C baggage current in the handlerTalvez já em andamento @mcculls assumiu há 19 dias. Abertacomp: context propagation inst: grpc type: feature request
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 78/100
DataDog/dd-trace-java#12654 · 1 responsável ·
Mantenedores costumam responder em até 2 dias
Todas as issues de DataDog/dd-trace-java
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
PhasetransCrystal/FPSMatch#47 ·
Mantenedores costumam responder em até 1 dia
-
Remove unactionable info logAbertabug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 76/100
apache/maven-toolchains-plugin#205 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
Mantenedores costumam responder em até 1 dia
-
type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia