RFR: 8357639: DigestEchoClient fails intermittently due to: java.io.IOException: Data received while in pool [v4]
Daniel Fuchs
dfuchs at openjdk.org
Mon Jun 9 13:56:13 UTC 2025
> The java/net/httpclient/DigestEchoClient.java fails intemittently with IOException: HTTP/1.1 header parser received no bytes.
>
> Analysis shows that this is caused by the CleanupTrigger which receives data after the reused connection has been taken out of the HTTP/1.1 clear pool (Caused by: java.io.IOException: Data received while in pool). This should not happen.
>
> The fix for [JDK-8338569](https://bugs.openjdk.org/browse/JDK-8338569) has improved the situation but apparently didn't fix the issue completely.
> The issue is that the write publisher manages to come active before the read subscriber has been switched, which opens a window in which the old read subscriber receives the data that should have been passed to the new one.
>
> To fix that, this change proposes to pause reading at the selector level before connecting the flows with the new publisher /subscriber pair. This should ensure that data doesn't reach the "old" subscriber, if the new write publisher manage to send data before the new read subscriber is subscribed.
Daniel Fuchs has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains eight additional commits since the last revision:
- Merge branch 'master' into DigestEchoClient-cleanup-8357639
- Logging
- A better fix
- Merge branch 'master' into DigestEchoClient-cleanup-8357639
- Access pendingSubscriptions only from InternalReadSubscriptionImpl - and synchronize offer/handle to avoid concurrent removal from the queue
- Merge branch 'master' into DigestEchoClient-cleanup-8357639
- Avoid unnecessary volatile reads
- 8357639
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/25416/files
- new: https://git.openjdk.org/jdk/pull/25416/files/8d728707..b27f1220
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=25416&range=03
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=25416&range=02-03
Stats: 991 lines in 79 files changed: 713 ins; 126 del; 152 mod
Patch: https://git.openjdk.org/jdk/pull/25416.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25416/head:pull/25416
PR: https://git.openjdk.org/jdk/pull/25416
More information about the net-dev
mailing list