RFR: 8309939: HttpClient should not use Instant.now() as Instant source for deadlines [v2]

Daniel Jeliński djelinski at openjdk.org
Wed Jun 14 12:18:02 UTC 2023


On Wed, 14 Jun 2023 11:02:04 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

>> The HttpClient uses `Instant.now()` to create deadlines for timeouts. This could have undesirable effects since `Instant.now()` is linked to the wall clock, which is not monotonic. This fix changes the HttpClient to use a monotonic instant source based on `System.nanoTime()` for the purpose of setting and comparing deadlines.
>
> Daniel Fuchs 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 branch 'master' into TimeSource
>  - 8309939

src/java.net.http/share/classes/jdk/internal/net/http/common/TimeSource.java line 41:

> 39:  * of monotonicity than the {@link System#nanoTime()} it is based on.
> 40:  */
> 41: public final class TimeSource implements InstantSource {

Given that all instances of TimeSource are essentially the same (through the use of shared `nanoSource`), can we add a private constructor and make this class a singleton?

src/java.net.http/share/classes/jdk/internal/net/http/common/TimeSource.java line 46:

> 44:     private static final TimeSource SOURCE = new TimeSource();
> 45: 
> 46:     private static final class NanoSource implements InstantSource {

This class doesn't need to implement InstantSource

src/java.net.http/share/classes/jdk/internal/net/http/common/TimeSource.java line 59:

> 57: 
> 58:         @Override
> 59:         public Instant instant() {

This method is not used anywhere

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14450#discussion_r1229507872
PR Review Comment: https://git.openjdk.org/jdk/pull/14450#discussion_r1229505949
PR Review Comment: https://git.openjdk.org/jdk/pull/14450#discussion_r1229506241


More information about the net-dev mailing list