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.
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.
- duplicates
-
JDK-8239117 httpclient/RetryPost.java failed due to "IOException: HTTP/1.1 header parser received no bytes"
- Closed
-
JDK-8332493 java/net/httpclient/ProxyAuthDisabledSchemes.java failed with HTTP/1.1 header parser received no bytes
- Closed
- relates to
-
JDK-8336655 java/net/httpclient/DigestEchoClient.java IOException: HTTP/1.1 header parser received no bytes
- Resolved
- links to
-
Commit(master) openjdk/jdk/723588a4
-
Review(master) openjdk/jdk/20623