Time in distributed system is complex. There is no way to guarantee that all nodes will have an exact clock across all of them.
Therefore relying on an exact shared time for correctness leads to incorrect systems.
On the other hand it has been very painful and limiting to not introduce time at all:
Event
s timestamps is essential.It is clear at this point that some concept of time is needed but a global clock is not an option. Each Replicante Core process uses the UTC time reported by the server it is running on assuming that time on all other servers in the custer is “accurate enough”. This assumption extends to the server(s) running dependencies.
What “accurate enough” means exactly depends on the operation being performed but sub-second precision should NEVER be required for the system to function correctly. On the other hand there is no guarantee the system works correctly in case the clock skew exceeds several minutes.
Final notes:
replictl
) can convert times as needed before showing.For practical purposes all the above just means means that an NTP agent should be running on all Replicante Core servers, including dependencies and ideally monitored datastores.