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

Reply via email to