引言
Quartz作为分布式任务调度框架,不仅支持单点模式,还支持集群模式,基本上成为Java中的定时任务标准,在多种大型互联网项目中都得到广泛应用。
情景回放
生产环境定时任务调度异常,通过查询框架表: QRTZ_TRIGGERS, 发现触发器的trigger_state 被设置成ERROR,被设置成ERROR的触发器将永远不会被调度中心再次调度(人为干预除外)。
排查方法
一般遇到这种问题都会第一时间想到google,搜索大部分的答案是: 集群节点的代码版本存在不一致。对于大部分情况下,排查到此结束。如果已经确保代码版本是一致的,还是会出现这种错误,那应该怎么办呢?源码分析,直入问题本质。
源码分析
通过应用日志查询JOB调度错误日志
根据错误: “Error retrieving job, setting trigger state to ERROR.” 定位到
JobStoreSuppor