-
由 陈泽健 提交于
背景: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>
72db5e2e