RFR: 8368249: HttpClient: Translate exceptions thrown by sendAsync [v6]

Jaikiran Pai jpai at openjdk.org
Wed Oct 29 10:21:09 UTC 2025


On Fri, 24 Oct 2025 14:42:41 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:

>> Ensure `HttpClient::sendAsync` translates every operational failure to an `IOException` as per specification.
>> 
>> `tier1-2` passes with the proposed changes.
>> 
>> **Context:** The parent issue, [JDK-8364733], reports that `HttpClient::sendAsync` leaks exceptions which do not extend from `IOException`, and this violates the method's specification. The [JDK-8367067] (#26876) sub-task improved issues around exceptions thrown by request body publishers – which triggered the first encounter with this problem. This PR (and its associated sub-task) is aimed to end this saga.
>> 
>> [JDK-8364733]: https://bugs.openjdk.org/browse/JDK-8364733
>> [JDK-8367067]: https://bugs.openjdk.org/browse/JDK-8367067
>
> Volkan Yazici has updated the pull request incrementally with three additional commits since the last revision:
> 
>  - Avoid peeling off `UncheckedIOException`
>  - Minimize bodies passed to `assertThrows()`
>  - Improve `HttpClientImpl` comments

The latest changes look good to me.

For the change to the `test/jdk/java/net/httpclient/AbstractThrowingSubscribers.java` test code, is that change still relevant/needed? I tried looking at that call sequence of that test but given all the layers/wrappers for these tests, I couldn't easily spot whether that change is necessary or not. Do you know what `throwable` instance gets passed to that `test(Throwable throwable)` method? Is it the "cause" from within an `ExecutionException`?

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

PR Comment: https://git.openjdk.org/jdk/pull/27787#issuecomment-3460745863


More information about the net-dev mailing list