同步任务偶发失败时,加几次自动重试很诱人。网络抖一下能自己恢复,值班的人也少接一条告警。问题是,重试会把整个 Task 再执行一遍。Writer 如果不具备幂等能力,一次短暂故障很可能被放大成重复数据。
DataX 对这件事并非完全没有防护。它没有根据异常类型判断“可恢复”或“不可恢复”,而是把决定权交给 Writer:只有 Writer 明确声明支持 FailOver,TaskGroupContainer 才会重建 Task。
这篇笔记核对的是 2020 年 12 月 17 日的 DataX 提交 5485fb3,距离文章日期两天。先把源码行为说清楚,再讨论调度平台应该补哪一层。