fix(scheduler): 新增僵尸执行常驻看门狗,杜绝执行线程死亡卡死调度
背景:5.44 出现执行线程死亡但进程存活的「僵尸执行」——DB 记录卡 running
29 小时,内存锁已释放但 DB 层 running 守卫(scheduler_service.py)永久挡死
调度,定时任务 6 小时触发全部被跳过。启动期 recover_interrupted_executions
只兜进程重启,无法兜线程死亡。
实现(execution_service.py + main.py):
- 新增常驻 watchdog_loop,每 60s 扫描 UI running/pending 执行
- 双活信号:内存心跳(每用例完成后 touch)+ DB 结果数跨扫描增长
(非绝对数量,存量结果不算存活)
- 30 分钟无活信号判僵尸,标记 failed + 释放内存锁(set_running_execution)
- 安全测试执行不纳入看门狗;5 分钟启动缓冲避免误杀
验证:
- 新增 tests/test_watchdog_stale_execution.py(9 例,全绿)
- 5.202/5.60 已部署并清理各自 1 个僵尸执行(330/0 条结果),自动触发新回归
- 5.44 等待当前 332 用例回归跑完后部署
Co-Authored-By:
Claude <noreply@anthropic.com>
正在显示
此差异已折叠。