Skip to content

v1.61.0 regression: all HTTP requests hang on Spring Boot 3.5.x + Undertow + Java 21 #11103

@prash3232

Description

@prash3232

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

  1. Run a Spring Boot 3.5.x application with Undertow (Tomcat excluded) on Java 21
  2. Add dd-java-agent.jar from v1.61.0 as a JVM agent (-javaagent:/dd-java-agent.jar)
  3. Start the application — it will appear healthy in logs
  4. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugBug report and fix

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions