一、背景
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)能够越来越好!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。