]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: clock: force internal time to wrap early after boot
authorWilly Tarreau <w@1wt.eu>
Tue, 7 Feb 2023 13:44:44 +0000 (14:44 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 8 Feb 2023 10:10:33 +0000 (11:10 +0100)
commit28360dc53f715c497fff822523f92769d8b1627d
tree1b62be0a0cf145c03e1c6c893e0964738c0708b3
parent9b5d57dfd5047b167896e08128c029dc7d3615b8
MEDIUM: clock: force internal time to wrap early after boot

GH issue #2034 clearly indicates yet another case of time roll-over
that went badly. Issues that happen only once every 50 days are hard
to detect and debug, and are usually reported more or less synchronized
from multiple sources. This patch finally does what had long been planned
but never done yet, which is to force the time to wrap early after boot
so that any such remaining issue can be spotted quicker. The margin delay
here is 20s (it may be changed by setting BOOT_TIME_WRAP_SEC to another
value). This value seems sufficient to permit failed health checks to
succeed and traffic to come in and possibly start to update some time
stamps (accept dates in logs, freq counters, stick-tables expiration
dates etc).

It could theoretically be helpful to have this in 2.7, but as can be
seen with the two patches below, we've already had incorrect use cases
of the internal monotonic time when the wall-clock one was needed, so
we could expect to detect other ones in the future. Note that this will
*not* induce bugs, it will only make them happen much faster (i.e. no
need to wait for 50 days before seeing them). If it were to eventually
be backported, these two previous patches must also be backported:

    BUG/MINOR: clock: use distinct wall-clock and monotonic start dates
    BUG/MEDIUM: cache: use the correct time reference when comparing dates
include/haproxy/defaults.h
src/clock.c