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.

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

Commit messages:
 - 8357639

Changes: https://git.openjdk.org/jdk/pull/25416/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25416&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8357639
  Stats: 15 lines in 1 file changed: 15 ins; 0 del; 0 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

Reply via email to