light-task-scheduler icon indicating copy to clipboard operation
light-task-scheduler copied to clipboard

JobTracker集群时差导致Cron任务重复触发

Open xionghan00 opened this issue 8 years ago • 2 comments

版本 1.6.9 JobTracker个数:2 任务类型:Cron-依赖上一周期

当前逻辑: 当TaskTracker完成任务后,随机选择一个JobTracker返回JobRunResult,JobTracker会根据当前服务器时间产生下一次触发任务。

场景: 假设JobTracker-1在 10:00(JobTracker-1的服务器时间)分发cron任务,task-tracker迅速完成任务并返回至JobTracker-2,而此时JobTracker-2的服务器时间为09:59。这样JobTracker-2计算出的下一个触发时间点依然是10:00,那么该cron任务在10:00时间点会被触发多次。

这个问题是否有办法规避?或者属于bug,需要修复?

xionghan00 avatar Feb 06 '17 03:02 xionghan00

只能保证两个jobtracker的服务器时间一致,尽量少的差别,我也碰到过这个问题。 或者使用分布式锁,保证在一个固定的时间内(如1s),只有一个jobtracker能派发任务。

lusong1986 avatar Jul 26 '17 09:07 lusong1986

这种情况确实会出现

Dorae132 avatar Aug 06 '18 16:08 Dorae132