mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 20:50:44 +00:00
BUG/MINOR: checks: properly handle wrapping time in __health_adjust()
There's an issue when a server state changes, we use an integer comparison
to decide whether or not to reschedule a test instead of using a wrapping
timer comparison. This will cause some health-checks not to be immediately
triggered half of the time, and some unneeded calls to task_queue() to be
performed in other cases.
This bug has always been there as it was introduced with the commit that
added the feature, 97f07b832
("[MEDIUM] Decrease server health based on
http responses / events, version 3"). This may be backported everywhere.
This commit is contained in:
parent
36441f46c4
commit
64ba5ebadc
@ -481,7 +481,7 @@ void __health_adjust(struct server *s, short status)
|
||||
|
||||
if (s->check.fastinter) {
|
||||
expire = tick_add(now_ms, MS_TO_TICKS(s->check.fastinter));
|
||||
if (s->check.task->expire > expire) {
|
||||
if (tick_is_lt(expire, s->check.task->expire)) {
|
||||
s->check.task->expire = expire;
|
||||
/* requeue check task with new expire */
|
||||
task_queue(s->check.task);
|
||||
|
Loading…
Reference in New Issue
Block a user