• Data Governance Dev's avatar
    fix(orchestrator): 依赖不在计划中时 WARN 跳过,而不是 RuntimeError · 3e07d7ac
    Data Governance Dev authored
    上一个提交引入了 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
    3e07d7ac
orchestrator.py 20.4 KB