为何EasyScheduler升级v1.1.0后定时任务不调度执行?

 阅读约 2 分钟

一、背景

EasyScheduler升级v1.1.0后,进行任务测试,发现只能调度执行新的定时任务,而不能调度旧的定时任务。

二、那么问题来了

究竟是哪里出问题了?

  • 1.我的操作步骤出现了bug?
  • 2.EasyScheduler官方的升级脚本有问题?

然而,从v1.0.3升级到v1.1.0完全是按照https://dolphinscheduler.apache.org/en-us/docs/release/upgrade.html官方手册进行操作的,所以操作步骤肯定没有问题。

经过和EasyScheduler负责人沟通后,确定是升级程序的一个bug,使得定时任务ID和定时触发器关联失败,导致旧的定时任务无法被调度。

那么问题发现了,该如何快速解决呢?有遇到同样问题的朋友,给出了一种方案,先手动下线定时器然后再手动上线即可恢复。但是这个显然不可行,上千个任务如何进行手动操作?但是为了确认有效性,通过测试了一个后,发现依然无效。最终pass该种方案。

经过分析,发现EasyScheduler调度定时任务主要用到的表为qrtz_cron_triggers,qrtz_job_details,qrtz_triggers
解决方案也不麻烦,既然都关联错误了,那么直接全部清除上述三个表中数据,然后写个脚本程序,把所有项目工作流定时器进行下线再上线即可自动补全数据,这是目前最快速的解决方案。而官方修复该bug需要等到下一个版本发布,由于EasyScheduler贡献给了apache,第一个版本还需要等待2~3个多月才能发版,所以等待不是最佳选择。

三、总结

  • 不要过分相信未经大量考研的开源产品,因为开源产品也和公司内部平台或者程序一样,都只是一套研发系统,需要经过千锤万打,才能方得始终
  • 既然使用某个开源产品,就要知己知彼,方能百战不殆定位各种问题以及快速得出最佳解决方案
  • 有一个为开源做贡献的心,每个平台起步都是艰辛的,需要我们的支持和滋养

最后,希望EasyScheduler(现在的DolphinScheduler)能够越来越好!

阅读 156更新于 11月4日
推荐阅读
目录