fix(orchestrator): 依赖不在计划中时 WARN 跳过,而不是 RuntimeError
上一个提交引入了 wave 调度,如果用户勾选了有依赖的
Step 但没勾该依赖(如选 1/3/4/5 但不选 2),
调度器会在 ready=[] 时抛 RuntimeError('调度死锁'),
整个 job 标失败,日志提示看起来很严重但其实只是用户配置问题。
修复:
- 在进入 wave 调度前加预处理,把'依赖不在计划里'
的 Step 拎出来 WARN 跳过(沿用非关键失败的处理路径)
- 把 wave 循环里 ready=[] 时的 RuntimeError 降级为 ERROR +
break(防御性保留,理论上预处理后不应该再发生)
- 调度计划日志里多加一行 '因依赖缺失跳过=...' 字段,
用户 / 排查时可以一眼看出被跳了哪个
验证(steps=[1,3,4,5] 此次失败案例):
调整前:Job 失败,错误 '调度死锁: 剩余 [3] 但无依赖被满足'
调整后:Step 3 因缺 [2] 被 WARN 跳过,Job 正常跑完 1/4/5
Showing
Please register or sign in to comment