BUG/MEDIUM: lua: Lua tasks fail to start.
I've been trying out 1.6 dev3 with lua support, and trying to start
lua tasks seems to not be working.
Using this configuration
global
lua-load /lua/lol.lua
debug
maxconn 4096
backend shard_b
server db01 mysql_shard_b:3306
backend shard_a
server db01 mysql_shard_a:3306
listen mysql-cluster
bind 0.0.0.0:8001
mode tcp
balance roundrobin
use_backend shard_b
And this lua function
core.register_task(function()
while true do
core.Alert("LOLOLOLOLOL")
end
end)
I'd always get a timeout error starting the registered function.
The problem lies as far as I can tell in the fact that is possible for
now_ms to not change (is this maybe a problem on my config/system?)
until the expiration check happens, in the resume function that
actually kickstarts the lua task, making HAProxy think that expiration
time for the task is up, if I understand correctly tasks are meant to
never really timeout.
diff --git a/src/hlua.c b/src/hlua.c
index 6789351..8e92134 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -3780,7 +3780,7 @@
* execution timeouts.
*/
if (!HLUA_IS_RUNNING(hlua))
- hlua->expire = tick_add(now_ms, hlua_timeout_task);
+ hlua->expire = tick_add_ifset(now_ms, hlua_timeout_task);
/* Execute the Lua code. */
status = hlua_ctx_resume(hlua, 1);