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