RFR: 8357639: DigestEchoClient fails intermittently due to: java.io.IOException: Data received while in pool [v5]
Daniel Jeliński
djelinski at openjdk.org
Tue Jun 10 10:43:34 UTC 2025
On Tue, 10 Jun 2025 09:54:47 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
>> 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 incrementally with one additional commit since the last revision:
>
> Update src/java.net.http/share/classes/jdk/internal/net/http/SocketTube.java
>
> Co-authored-by: Daniel Jelinski <djelinski1 at gmail.com>
Marked as reviewed by djelinski (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/25416#pullrequestreview-2912955239
More information about the net-dev
mailing list