On Mon, Jan 15, 2024 at 8:15 PM Miroslav Lichvar <mlich...@redhat.com>
wrote:

> On Mon, Jan 15, 2024 at 06:57:48PM +0700, James Clark wrote:
> > In computing the initial step, how does chrony handle leap seconds?
> >
> > There are two ways of computing offsets:
> > - subtracting the TAI times (so that it is really the number of seconds
> > that elapse between the system time and the true time)
> > - subtracting the POSIX times (so leap seconds are ignored)
>
> chronyd corrects the system clock, which ignores leap seconds, so it
> expects the second approach. It doesn't do any corrections of the
> offset.
>

This is going to be a bit strange in the vicinity of a positive leap
second. Suppose the true time is ahead of the system time by 3 seconds.
There are three successive cases around a positive leap second:

- the true time is before the start of the leap: in this case the
difference in the POSIX system times will be 3
- the true time is after the leap has finished but system time is before
the leap: in this case the difference in the POSIX times will be 2 (because
1 second of the difference is a leap second and so ignored)
- the system time is after the leap is finished: in this case the
difference will again be 3

Are you saying that chrony expects the offset to jump around like this
(even though there is no change in the amount by which the clock needs to
be corrected)?

I can change my code to implement this, if that's what's needed: I would
convert both times to POSIX before computing the offset, instead of
converting them both to TAI.

James

Reply via email to