Quartz持久化后开发中出现的一个问题

Quartz持久化后开发中出现的一个问题

最近来了新同事,开始接手代码,同事拉取的是主分支,主分支比开发分支少了最近加上的两个定时任务。按道理来说不管你本地开发运行的是什么版本,对于测试环境来说都没任何影响。但是,本地开发数据库和测试库是一个库!!!

出现的问题

下午2点例常检查测试服务器日志,定时任务没有今天的错误日志,但是,检查定时任务时发现竟然有一个定时任务状态为 error,于是检查了这个定时任务的代码,发现它只是简单的调用了一个其他工程的接口,当前时间段也没有发生过异常,这就让我很迷惑了,思考了一番,还是没头绪,便把它状态恢复为正常。

傍晚要下班的时候,同事告诉我那个定时任务又双叒叕变成error状态了。于是开始仔细排查:

  1. 服务器日志 ,error的定时任务并没有错误日志输出,根据它最后一次执行时间查到它调用的接 口也是正常的;
  2. 恢复出错的定时任务,本地启动定时工程,等了一段时间,错误没有重线;
  3. 排查所有相关时间段的服务器日志,没发现有什么线索;
  4. 查看数据库定时任务的执行数据
  5. 怀疑人生…

解决

版本马上就要上线,不把这个问题解决看来是下不了班了。于是便一个一个的问同事今天有没有修改定时任务,最后了解到有一个新来的同事中午本地启动了一次定时任务,傍晚也本地启动了一次,这就很有问题,看来下班有望啦!
打开同事代码发现分支是master,心里顿时有了数,先恢复定时任务,然后在同事电脑上启动定时任务,等了一段时间,果然报错了,调度器找不到任务,同时定时任务状态又变成error了。一切理顺的我关掉定时任务,顺手切到开发分支更新了同事的代码…

分析

quartz会忽略状态为error的定时任务,定时任务执行出错时会把出错的定时任务状态更新为error。持久化的quartz作为分布式的定时任务,当某个节点的定时任务执行异常后,自动把数据库状态更新为error,其他节点下个执行周期开始忽略当前出错的定时任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值