On Thu, 22 Aug 2024 13:43:28 GMT, Daniel Fuchs <dfu...@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. >> 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 src/java.net.http/share/classes/jdk/internal/net/http/ConnectionPool.java line 554: > 552: } > 553: Throwable cause = new IOException("Unexpected cleanup > triggered for non pooled connection", error); > 554: cause.printStackTrace(); Is the stacktrace printing intentional? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20623#discussion_r1734961391