]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: checks: Reschedule check on observe mode only if fastinter is set
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 7 May 2021 09:45:26 +0000 (11:45 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 7 May 2021 10:10:30 +0000 (12:10 +0200)
On observe mode, if a server is marked as DOWN, the server's health-check is
rescheduled using the fastinter timeout if the new expiration date is newer
that the current one. But this must only be performed if the fastinter
timeout is defined.

Internally, tick_is_lt() function only checks the date and does not perform any
verification on the provided args. Thus, we must take care of it. However, it is
possible to disable the server health-check by setting its task expiration date
to TICK_ETERNITY.

This patch must be backported as far as 2.2. It is related to

src/check.c

index 1ad587cd1dff21922fe16aea820d104a39ddc4e3..34039626071e62321865714ba6973f36eb9417bd 100644 (file)
@@ -716,7 +716,7 @@ void __health_adjust(struct server *s, short status)
        s->consecutive_errors = 0;
        _HA_ATOMIC_INC(&s->counters.failed_hana);
 
-       if (tick_is_lt(expire, s->check.task->expire)) {
+       if (tick_isset(expire) && tick_is_lt(expire, s->check.task->expire)) {
                /* requeue check task with new expire */
                task_schedule(s->check.task, expire);
        }