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
