> 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. > This should not happen. > > The issue is caused by deferred registration of read subscribers with the > SocketTube. The subscribers are registered within the SelectorManager thread > to ensure proper interaction with the read method. > > Sometimes pending subscribers are pushed faster than they are actually > subscribed, which may cause the wrong subscriber to be subscribed at the > wrong time. > > This is a redo of [JDK-8336655](https://bugs.openjdk.org/browse/JDK-8336655) > which was a failed fix. > The main difference is that the new fix uses a ConcurrentLinkedQueue to make > sure all subscribers get subscribed and dropped in the right sequence. > Marking previous subscription as stopped ensures that data can only be routed > to the last subscriber in the queue.
Daniel Fuchs has updated the pull request incrementally with one additional commit since the last revision: Better exception message for ShutdownNow ------------- Changes: - all: https://git.openjdk.org/jdk/pull/20623/files - new: https://git.openjdk.org/jdk/pull/20623/files/0436091c..da64bb8a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=20623&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=20623&range=00-01 Stats: 16 lines in 1 file changed: 4 ins; 2 del; 10 mod Patch: https://git.openjdk.org/jdk/pull/20623.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/20623/head:pull/20623 PR: https://git.openjdk.org/jdk/pull/20623