[crac] RFR: Correct System.nanotime() value after restore
Anton Kozlov
akozlov at openjdk.org
Tue Mar 28 09:35:09 UTC 2023
On Tue, 28 Mar 2023 06:53:21 GMT, Radim Vansa <duke at openjdk.org> wrote:
>> 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.
restore_start_counter is indeed read on restore, in the process that execs into CREngine, so the value is not adjusted. The value then transfered to the restored VM via SHM [1] and then used for the difference between the javaTimeNanos() which is going to be adjusted. I'm worried the difference between not adjusted and adjusted value may lose sense.
Could you extend the NanoTimeTest to demonstrate the `uptime_since_restore` cannot become negative or "too" big?
[1] https://github.com/openjdk/crac/commit/9ed961106a255145274de777e151577863b013ea#diff-aeec57d804d56002f26a85359fc4ac8b48cfc249d57c656a30a63fc6bf3457adR6385
-------------
PR Review Comment: https://git.openjdk.org/crac/pull/53#discussion_r1150304555
More information about the crac-dev
mailing list