From: Willy Tarreau Date: Wed, 4 Mar 2015 22:26:01 +0000 (+0100) Subject: BUG/MEDIUM: task: fix recently introduced scheduler skew X-Git-Tag: v1.6-dev1~65 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c46c965540386d47c26eb7fc5218b72ddf19b8e0;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: task: fix recently introduced scheduler skew Commit 501260b ("MEDIUM: task: always ensure that the run queue is consistent") introduced a skew in the scheduler : if a negatively niced task is woken up, it can be inserted prior to the current index and will be skipped as long as there is some activity with less prioritary tasks. The immediate effect is that it's not possible to get access to the stats under full load until the load goes down. This is because the rq_next constantly evolves within more recent positions. The fix is simple, __task_wakeup() must empty rq_next. The sad thing is that this issue was fixed during development and missed during the commit. No backport is needed, this is purely 1.6 stuff. --- diff --git a/src/task.c b/src/task.c index 4985aa22a9..d475322c4c 100644 --- a/src/task.c +++ b/src/task.c @@ -65,6 +65,7 @@ struct task *__task_wakeup(struct task *t) t->state &= ~TASK_WOKEN_ANY; eb32_insert(&rqueue, &t->rq); + rq_next = NULL; return t; }