RFR: 8373409: java/net/httpclient/http3/H3ErrorHandlingTest.java failed due to deadlock

Daniel Fuchs dfuchs at openjdk.org
Mon Dec 15 09:15:49 UTC 2025


On Fri, 12 Dec 2025 12:31:07 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:

> This PR fixes a deadlock between the `localConnectionIdManager` and the `connections` map by closing the manager before calling `connections.compute`.
> 
> No new tests; the issue requires a complex setup to reproduce, and the new code is easy enough to reason about. Existing tests continue to pass.

src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicEndpoint.java line 1593:

> 1591:         // we can ignore stateless reset in the draining state.
> 1592:         remapPeerIssuedResetToken(connection, draining);
> 1593:         draining.startTimer();

shouldn't we start the timer only if the connection has been added, and therefore call startTimer in compute?

src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicEndpoint.java line 1630:

> 1628:         var closingConnection = new ClosingConnection(connection.connectionIds(), idleTimeout, datagram);
> 1629:         remapPeerIssuedResetToken(connection, closingConnection);
> 1630:         closingConnection.startTimer();

Same question here.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28788#discussion_r2618578014
PR Review Comment: https://git.openjdk.org/jdk/pull/28788#discussion_r2618586753


More information about the net-dev mailing list