一个无限的 Lua 脚本会锁定线程,无法被中断(没有 SCRIPT KILL,也没有 lua-time-limit)
作者: vyavdoshenko创建于 2026年9月9日更新于 2026年9月9日
标签bug
在对 Dragonfly 运行 Valkey TCL 套件 (单元/脚本, "Timedout read-only scripts can be killed by SCRIPT KILL" 和同级) 过程中发现的问题。Lua 脚本在其连接线程上运行完毕,无法被抢占:没有指令计数钩子,没有 `SCRIPT KILL`,没有 `lua-time-limit`,没有 `busy-reply-threshold`,也没有 BUSY 回复。该线程上调度的每个客户端都会卡死;如果脚本落在监听线程上,新连接也会卡死,服务器实际上就处于下线状态。恢复只能使用 kill -9。任何具有 EVAL 访问权限的非特权客户端都可以通过一条短命令无限期地卡死服务器。
内容来源: dragonflydb/dragonfly