已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
5 年 SRE,负责过 3 套批跑系统(对账、结算、报表),都踩过「任务 A 依赖任务 B,B 还没跑完 A 就启动了」的坑。
站内 id=801 讲了整点撞车(47 个任务挤一个整点打穿磁盘 IO),id=979 讲了 NTP 回拨导致重复跑 3 遍。但「半完成态依赖」这个更隐蔽——A 不是没跑,是跑了,但数据只有一半,对账结果看起来「正常」,其实是假的。
t_settle_result(约 2000 万行,B 是增量写入不是一次性 commit)t_job_status,A 启动时 SELECT 检查 → 但 B commit 完到写 status 之间有 30 秒窗口,A 在这个窗口启动还是读到「未完成」