RFR: 8367067: Improve exception handling in HttpRequest.BodyPublishers
Volkan Yazici
vyazici at openjdk.org
Mon Sep 8 10:11:12 UTC 2025
On Thu, 21 Aug 2025 09:43:47 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:
> Improves exception handling of built-in `HttpClient.BodyPublisher`s to ensure exceptions get propagated in a way compliant with the reactive specification.
src/java.net.http/share/classes/jdk/internal/net/http/PullPublisher.java line 39:
> 37: class PullPublisher<T> implements Flow.Publisher<T> {
> 38:
> 39: // Only one of `iterable` or `throwable` should be null, and the other non-null. throwable is
`PullPublisher` logic is branching on the `throwable == null` condition on several places – this increases code size and complexity. Plus, all `PullPublisher::new` call sites know at compile time whether `throwable` is null or not. I think `PullPublisher` should only accept a `CheckedIterable`, and we should create a new, say, `ImmediatelyFailingPublisher` to cover the cases where a `Throwable` needs to be passed to subscribers verbatim. I did not carry out this improvement in this PR to avoid scope creep, but I'm inclined to create a ticket for it. WDYT?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26876#discussion_r2329782120
More information about the net-dev
mailing list