On Wed, 29 Oct 2025 20:53:22 GMT, Volkan Yazici <[email protected]> wrote:
>> Introduce necessary fixes to address exceptions thrown when excessive
>> `Duration`s are provided to `Duration`-accepting `HttpClient` public APIs.
>
> Volkan Yazici has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Move `delta == 0` in `until()` to the catch block
Changes requested by dfuchs (Reviewer).
src/java.net.http/share/classes/jdk/internal/net/http/common/Deadline.java line
318:
> 316: // Hence, we should never receive a numeric overflow while
> calculating the delta between two deadlines.
> 317: throw new IllegalStateException("Unexpected overflow",
> exception);
> 318: }
hmmm... `DateTimeException` and `ArithmeticException` are both
`RuntimeException`. We know they won't be thrown here, so there's no point in
trying to catch them to replace them with another exception, since that would
essentially be dead code. Removing the `@throws` from the API doc is the right
call though.
If you want you can add an `@apiNote` to say this method will never throw
`DateTimeException` or `ArithmeticException` since duration between two
deadlines will never overflow; but this is an internal API so the comment in
the code below is probably enough.
Suggestion:
if (startInclusive.equals(endExclusive)) return Duration.ZERO;
// `Deadline` works with `Instant` under the hood.
// Delta between `Instant.MIN` and `Instant.MAX` fits in a `Duration`.
// Hence, we should never receive a numeric overflow while calculating
the delta between two deadlines.
return Duration.between(startInclusive.deadline, endExclusive.deadline);
-------------
PR Review: https://git.openjdk.org/jdk/pull/27973#pullrequestreview-3398689313
PR Review Comment: https://git.openjdk.org/jdk/pull/27973#discussion_r2477461476