RFR: 8371903: HttpClient: improve handling of HTTP/2 GOAWAY frames with error code [v5]

Daniel Fuchs dfuchs at openjdk.org
Wed Dec 10 16:40:18 UTC 2025


On Wed, 10 Dec 2025 14:35:29 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:

>> EunHyunsu has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   8371903: Move goAwaySentLatch.await() back to original position
>>   
>>   Move the await call to after the first request but before the second
>>   and third requests, ensuring only one initial connection is created
>>   and the other requests are properly retried.
>
> Right, we only create one connection initially, and requests 2 and 3 are usually sent over the first connection before they are retried on new connections. This can be observed in the server logs as `resetting stream 3 as REFUSED_STREAM`. Ideally the server should not send anything after sending the GOAWAY frame with error, but I think what we have is good enough,

> @djelinski Oops, you're right! I moved `goAwaySentLatch.await()` back to its original position and now it works as expected - only 1 connection is created initially, and the other 2 are retries. Tested locally and all passed.

FWIW - if the request succeeds (no exception thrown) you can check/assert whether two requests were sent on the same or different connections by comparing the value returned by `HttpResponse::connectionLabel()`; Though the result is an `Optional` our implementation will never return an empty optional.

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

PR Comment: https://git.openjdk.org/jdk/pull/28632#issuecomment-3637968978


More information about the net-dev mailing list