RFR: 8368528: HttpClient.Builder.connectTimeout should accept arbitrarily large values
Volkan Yazici
vyazici at openjdk.org
Fri Oct 24 12:21:27 UTC 2025
On Fri, 24 Oct 2025 12:10:38 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:
> Introduce necessary fixes to address exceptions thrown when excessive `Duration`s are provided to `Duration`-accepting `HttpClient` public APIs.
src/java.net.http/share/classes/jdk/internal/net/http/HttpQuicConnection.java line 1:
> 1: /*
Addresses following failures:
Caused by: java.lang.ArithmeticException: long overflow
at java.base/java.lang.Math.multiplyExact(Math.java:1036)
at java.base/java.lang.Math.multiplyExact(Math.java:1012)
at java.base/java.time.Duration.toMillis(Duration.java:1243)
at java.net.http/jdk.internal.net.http.HttpQuicConnection$H3QuicConnectionImpl.connectAsync(HttpQuicConnection.java:509)
src/java.net.http/share/classes/jdk/internal/net/http/common/Deadline.java line 1:
> 1: /*
Addresses two following failures:
Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant
at java.base/java.time.Instant.plusSeconds(Instant.java:883)
at java.base/java.time.Instant.plus(Instant.java:856)
at java.base/java.time.Instant.plus(Instant.java:209)
at java.base/java.time.Duration.addTo(Duration.java:1120)
at java.base/java.time.Instant.plus(Instant.java:788)
at java.net.http/jdk.internal.net.http.common.Deadline.plus(Deadline.java:177)
Caused by: java.lang.ArithmeticException: long overflow
at java.base/java.lang.Math.multiplyExact(Math.java:1036)
at java.base/java.time.Instant.millisUntil(Instant.java:1207)
at java.base/java.time.Instant.until(Instant.java:1153)
at java.net.http/jdk.internal.net.http.common.Deadline.until(Deadline.java:200)
test/jdk/java/net/httpclient/DurationOverflowTest.java line 257:
> 255: Duration.MAX,
> 256: // This triggers different exceptions than the ones triggered by `Duration.MAX`
> 257: Duration.ofMillis(Long.MAX_VALUE));
The reproduction by the reporter provides 3 `Duration` values triggering failures. Above two is sufficient to reproduce all 3 exceptions shared earlier:
1. `plus(Deadline.java:177)`
2. `until(Deadline.java:200)`
3. `connectAsync(HttpQuicConnection.java:509)`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27973#discussion_r2460116503
PR Review Comment: https://git.openjdk.org/jdk/pull/27973#discussion_r2460121100
PR Review Comment: https://git.openjdk.org/jdk/pull/27973#discussion_r2460135873
More information about the net-dev
mailing list