mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-06 07:07:04 +02:00
BUG/MEDIUM: checks: make sure to always apply offsets to now_ms in expiration
Now_ms can be zero nowadays, so it's not suitable for direct assignment to t->expire, as there's a risk that the timer never wakes up once assigned (TICK_ETERNITY). Let's use tick_add(now_ms, 0) for an immediate wakeup instead. The impact here might be health checks suddenly stopping. This should be backported where it applies.
This commit is contained in:
parent
555994c968
commit
2f287f14f3
@ -1279,7 +1279,7 @@ struct task *process_chk_conn(struct task *t, void *context, unsigned int state)
|
||||
* was erased during the bounce.
|
||||
*/
|
||||
if (!tick_isset(t->expire)) {
|
||||
t->expire = now_ms;
|
||||
t->expire = tick_add(now_ms, 0);
|
||||
expired = 0;
|
||||
}
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ static void pid_list_expire(pid_t pid, int status)
|
||||
HA_SPIN_LOCK(PID_LIST_LOCK, &pid_list_lock);
|
||||
list_for_each_entry(elem, &pid_list, list) {
|
||||
if (elem->pid == pid) {
|
||||
elem->t->expire = now_ms;
|
||||
elem->t->expire = tick_add(now_ms, 0);
|
||||
elem->status = status;
|
||||
elem->exited = 1;
|
||||
task_wakeup(elem->t, TASK_WOKEN_IO);
|
||||
|
Loading…
Reference in New Issue
Block a user