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

Ryan Flegel duke at openjdk.org
Fri Oct 18 21:07:18 UTC 2024


> 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 incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains two additional commits since the last revision:

 - Merge remote-tracking branch 'origin/master' into backport-720b44648b
 - Backport 720b44648bcff997278af92746f942b2425298a5

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

Changes:
  - all: https://git.openjdk.org/jdk21u-dev/pull/1020/files
  - new: https://git.openjdk.org/jdk21u-dev/pull/1020/files/1ac05af9..6d99ac77

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk21u-dev&pr=1020&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk21u-dev&pr=1020&range=00-01

  Stats: 2 lines in 1 file changed: 1 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk21u-dev/pull/1020.diff
  Fetch: git fetch https://git.openjdk.org/jdk21u-dev.git pull/1020/head:pull/1020

PR: https://git.openjdk.org/jdk21u-dev/pull/1020


More information about the jdk-updates-dev mailing list