Bug Report
Summary
After upgrading from v1.60.4 to v1.61.0, all inbound HTTP requests hang indefinitely on services running Spring Boot 3.5.x with the Undertow web server on Java 21. The JVM starts successfully, the port binds, and application logs show "Started in X seconds" — but every HTTP request (including health probes) connects at TCP level and receives zero bytes, causing Kubernetes liveness/readiness probes to fail and CrashLoopBackOff.
Update (2026-04-14): We have narrowed the affected combination to Spring Boot 3.5.x + Undertow. Services on Spring Boot 3.4.x with the same Undertow setup and the same v1.61.0 agent do not exhibit this behaviour. See additional notes below.
Environment
| Field |
Value |
| dd-java-agent version |
v1.61.0 |
| Last working version |
v1.60.4 |
| Java version |
21 (OpenJDK / Eclipse Temurin) |
| Framework |
Spring Boot 3.5.x (confirmed 3.5.5 and 3.5.13) |
| Web server |
Undertow (embedded, Tomcat excluded) |
| Runtime |
Containerised (Kubernetes / EKS) |
| OS |
Linux (distroless/debian base image) |
Symptoms
- Application starts successfully (no exception in startup logs)
- Port 8080 is bound and accepting TCP connections
- All HTTP requests hang — TCP connects but zero bytes returned
- Not endpoint-specific:
/actuator/health, /info, and all app endpoints affected
- Kubernetes readiness/liveness probes time out → pod restarts → CrashLoopBackOff
- Reverting to
v1.60.4 immediately resolves the issue with no other changes
Reproduction Steps
- Run a Spring Boot 3.5.x application with Undertow (Tomcat excluded) on Java 21
- Add
dd-java-agent.jar from v1.61.0 as a JVM agent (-javaagent:/dd-java-agent.jar)
- Start the application — it will appear healthy in logs
- Send any HTTP request — it will hang indefinitely
Workaround
Pin to v1.60.4:
https://github.com/DataDog/dd-trace-java/releases/download/v1.60.4/dd-java-agent.jar
SHA256: c55578cf5b1c14bcb33c2c9405e03f1e0c99e68d48cd12fb5ac9430d1013576b
Impact
Any service using the floating URL https://dtdg.co/java-tracer-v1 in its Dockerfile that rebuilt after April 8 (when v1.61.0 was published) will silently pick up v1.61.0 and enter CrashLoopBackOff — if it is on Spring Boot 3.5.x + Undertow.
We have confirmed multiple independent services affected by this combination.
Additional Notes
- Spring Boot 3.4.x is NOT affected: We have a service with the identical stack (Undertow, Java 21, Kubernetes, same Dockerfile pattern) on Spring Boot 3.4.5 — it pulled v1.61.0 and operates normally. This strongly suggests the regression is triggered by a change introduced in Spring Boot 3.5.x's Undertow integration (possibly virtual thread handling, request handler chain registration, or I/O filter changes).
- Once Datadog releases a fix, we plan to unpin and resume tracking the latest version
- We are happy to provide debug logs, JVM thread dumps, or any other diagnostics if helpful
Bug Report
Summary
After upgrading from
v1.60.4tov1.61.0, all inbound HTTP requests hang indefinitely on services running Spring Boot 3.5.x with the Undertow web server on Java 21. The JVM starts successfully, the port binds, and application logs show "Started in X seconds" — but every HTTP request (including health probes) connects at TCP level and receives zero bytes, causing Kubernetes liveness/readiness probes to fail and CrashLoopBackOff.Environment
Symptoms
/actuator/health,/info, and all app endpoints affectedv1.60.4immediately resolves the issue with no other changesReproduction Steps
dd-java-agent.jarfrom v1.61.0 as a JVM agent (-javaagent:/dd-java-agent.jar)Workaround
Pin to
v1.60.4:Impact
Any service using the floating URL
https://dtdg.co/java-tracer-v1in its Dockerfile that rebuilt after April 8 (when v1.61.0 was published) will silently pick up v1.61.0 and enter CrashLoopBackOff — if it is on Spring Boot 3.5.x + Undertow.We have confirmed multiple independent services affected by this combination.
Additional Notes