On Fri, 12 Dec 2025 12:31:07 GMT, Daniel Jeliński <[email protected]> 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

Reply via email to