fix: 断点丢失时 goal-resume 拒绝成 failed,阻断自动恢复空转
2026-10-29 长任务实弹:Docker goal 断点续跑在 host-state 里找 不到任务时抛 KeyError,worker 把无结论异常退出判 interrupted, 自动恢复再排队、再 KeyError,12 秒一轮空转 49 次(人工暂停 拦下,第 50 次人工续跑又烧掉),文件 32 章原样未动。 修法:host.py goal-resume 先查任务在不在 state 里,不在就打印 拒绝行、正常退出;sandbox 三处解析(本地、Docker resume、 Docker 断点)见拒绝行即判 failed 终态,不进自动恢复循环。 单测:host 缺任务拒绝不炸 + 三处解析拒绝判 failed。
This commit is contained in:
1 parent
e48b756f96
commit
a5f2e4e091
4 files changed
+138
-3
No files matched your search
@@ -3079,6 +3079,16 @@ def main():
|
||||
timeout=args.turn_timeout,
|
||||
verify_timeout=args.verify_timeout)
|
||||
elif args.cmd == "goal-resume":
|
||||
# 断点丢失守卫(2026-10-29 长任务实弹):host-state 里没有
|
||||
# 该任务时直接拒绝、正常退出,绝不能让 KeyError traceback
|
||||
# 冲出去——worker 会把无结论的异常退出判成 interrupted,
|
||||
# 自动恢复再排队、再 KeyError,12 秒一轮空转到 50 次上限
|
||||
# 才停。拒绝行由 worker 解析成 failed 终态(断点已丢,
|
||||
# 续跑无意义),不进自动恢复循环。
|
||||
if args.task not in (state.get("tasks") or {}):
|
||||
print(f"goal-resume 拒绝:host-state 里没有该任务 "
|
||||
f"{args.task},断点已丢失,不能续跑")
|
||||
return
|
||||
t = state["tasks"][args.task]
|
||||
# P1 goal-resume 契约(与 cloud/sandbox.py、cloud/worker.py
|
||||
# 三处一致,绝不能混用):
|
||||
|
||||
Reference in new issue
Block a user