RFR: 8372951: The property jdk.httpclient.quic.maxBidiStreams should be renamed to jdk.internal
Jaikiran Pai
jpai at openjdk.org
Wed Dec 3 12:44:30 UTC 2025
On Tue, 2 Dec 2025 16:53:23 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
> The `jdk.httpclient.quic.maxBidiStreams` is an undocumented system property only used in tests. This property is only useful to control the default HTTP/3 test server implementation. It will never be documented or exposed. It should be clearly labelled as internal.
> The HTTP/3 client always provide a value of 0 for the `initial_max_streams_bidi` transport parameter, so the default value that the quic stack uses internally to set the parameter if no value is provided is never used on the client side.
>
> The `H3StreamLimitReachedTest` can be used to verify the change - it won't pass if the property is not correctly configured in the test.
>
> I have also taken this opportunity to add comments to the `H3StreamLimitReachedTest` and the `StreamLimitTest`, to explain the logic of each test.
>
> With this I believe that we can also say that this change will fix [JDK-8365794](https://bugs.openjdk.org/browse/JDK-8365794).
src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicConnectionImpl.java line 179:
> 177: // The default value for the max_idle_timeout transport parameter that a QuicConnectionImpl
> 178: // will send to its peer, if no value is provided by the higher level protocol.
> 179: public static final int DEFAULT_MAX_INITIAL_TIMEOUT = Math.clamp(
Hello Daniel, I think this comment is an oversight. This `DEFAULT_MAX_INITIAL_TIMEOUT` and the corresponding property control the maximum amount of time we wait for the connection attempt, against a server, to respond with an `INITIAL` packet. It doesn't control the idle timeout transport parameter.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/28611#discussion_r2584956772
More information about the net-dev
mailing list