BUG/MAJOR: lua: scheduled task is freezing.

Since commit 'MAJOR: task: task scheduler rework'
0194897e54. LUA's
scheduling tasks are freezing.

A running task should not handle the scheduling itself
but let the task scheduler to handle it based on the
'expire' field.

[wt: no backport needed]
This commit is contained in:
Emeric Brun 2017-10-17 18:58:40 +02:00 committed by Willy Tarreau
parent 00bc3cb59f
commit 253e53e661
1 changed files with 4 additions and 8 deletions

View File

@ -5360,12 +5360,6 @@ static struct task *hlua_process_task(struct task *task)
struct hlua *hlua = task->context;
enum hlua_exec status;
/* We need to remove the task from the wait queue before executing
* the Lua code because we don't know if it needs to wait for
* another timer or not in the case of E_AGAIN.
*/
task_delete(task);
/* If it is the first call to the task, we must initialize the
* execution timeouts.
*/
@ -5385,7 +5379,7 @@ static struct task *hlua_process_task(struct task *task)
case HLUA_E_AGAIN: /* co process or timeout wake me later. */
if (hlua->wake_time != TICK_ETERNITY)
task_schedule(task, hlua->wake_time);
task->expire = hlua->wake_time;
break;
/* finished with error. */
@ -5394,6 +5388,7 @@ static struct task *hlua_process_task(struct task *task)
hlua_ctx_destroy(hlua);
task_delete(task);
task_free(task);
task = NULL;
break;
case HLUA_E_ERR:
@ -5402,9 +5397,10 @@ static struct task *hlua_process_task(struct task *task)
hlua_ctx_destroy(hlua);
task_delete(task);
task_free(task);
task = NULL;
break;
}
return NULL;
return task;
}
/* This function is an LUA binding that register LUA function to be