[crac] RFR: Correct System.nanotime() value after restore

Radim Vansa duke at openjdk.org
Tue Mar 28 06:56:06 UTC 2023


On Mon, 27 Mar 2023 17:25:22 GMT, Anton Kozlov <akozlov at openjdk.org> wrote:

>> There are various places both inside JDK and in libraries that rely on monotonicity of `System.nanotime()`. When the process is restored on a different machine the value will likely differ as the implementation provides time since machine boot. This PR records wall clock time before checkpoint and after restore and tries to adjust the value provided by nanotime() to reasonably correct value.
>
> src/hotspot/share/runtime/os.cpp line 2051:
> 
>> 2049:     diff_millis = 0;
>> 2050:   }
>> 2051:   javaTimeNanos_offset = checkpoint_nanos - javaTimeNanos() + diff_millis * 1000000L;
> 
> Will `uptime_since_restore` still report the correct time after the change?
> 
> https://github.com/openjdk/crac/blob/9ed961106a255145274de777e151577863b013ea/src/hotspot/os/linux/os_linux.cpp#L5697

It should, since both times are read after restore.

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

PR Review Comment: https://git.openjdk.org/crac/pull/53#discussion_r1150107225


More information about the crac-dev mailing list