[jdk21u-dev] RFR: 8335181: Incorrect handling of HTTP/2 GOAWAY frames in HttpClient [v3]

Ryan Flegel duke at openjdk.org
Mon Oct 21 21:10:28 UTC 2024


On Mon, 21 Oct 2024 14:28:29 GMT, Ryan Flegel <duke at openjdk.org> wrote:

>> 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 Flegel has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits:
> 
>  - Merge branch 'master' of https://git.openjdk.org/jdk21u-dev into backport-720b44648b
>  - Merge remote-tracking branch 'origin/master' into backport-720b44648b
>  - Backport 720b44648bcff997278af92746f942b2425298a5

Merged from master to resolve some trivial merge conflicts.

Re-running tier2 tests, I only have the following 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.

-------------

PR Comment: https://git.openjdk.org/jdk21u-dev/pull/1020#issuecomment-2427720240


More information about the jdk-updates-dev mailing list