8335181: Incorrect handling of HTTP/2 GOAWAY frames in HttpClient

Ryan Flegel rflegel at gmail.com
Wed Oct 9 18:48:47 UTC 2024


Hi there,

I'm wondering if someone would be able to review
https://github.com/openjdk/jdk21u-dev/pull/1020 for me. There were a couple
small merge conflicts.

I did try to cc this list from the PR, but that didn't seem to work for me.

----

I am backporting this fix because I am being affected by [JDK-8335181](
https://bugs.openjdk.org/browse/JDK-8335181). I had to downgrade to
HTTP/1.1 in order to use `HttpClient`.

I needed to resolve two minor conflicts in `MultiExchange.java` due to
[JDK-8191494](https://bugs.openjdk.org/browse/JDK-8191494) being applied
slightly differently in different projects. In both cases, I kept the
change closer to upstream.

The conflicts were:
* Explicit vs implicit null field initialization
* Different debug log message

### Tests All tests in the GitHub actions have passed.

I have run the `jdk/java/net` tests locally and there were several
failures, including 4 within `java/net/httpclient`. However, I have
confirmed that all the failed tests also fail before applying the patch, so
they seem to be unrelated.

Here is a full list of the failures:

* java/net/DatagramSocket/B6411513.java: java.net.DatagramSocket.receive:
packet isn't received
* java/net/DatagramSocket/SendReceiveMaxSize.java: This test verifies that
on macOS, the send buffer size is configured by default so that none of our
implementations of the UDP protocol will fail with a "packet too large"
exception when trying to send a packet of the maximum possible size allowed
by the protocol.
* java/net/httpclient/ConnectTimeoutNoProxyAsync.java: Tests for connection
related timeouts
* java/net/httpclient/ConnectTimeoutNoProxySync.java: Tests for connection
related timeouts
* java/net/httpclient/ConnectTimeoutWithProxyAsync.java: Tests for
connection related timeouts
* java/net/httpclient/ConnectTimeoutWithProxySync.java: Tests for
connection related timeouts

UPDATE: I've run the rest of the tier2 tests and there were two additional
JDK failures that appear to be unrelated:

* com/sun/jndi/dns/ConfigTests/Timeout.java: Tests that we can set the
initial UDP timeout interval and the number of retries.
* com/sun/jndi/ldap/LdapPoolTimeoutTest.java: Multi-threaded client timeout
tests for ldap pool

-- 
Ryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/net-dev/attachments/20241009/2d5f219d/attachment.htm>


More information about the net-dev mailing list