2014-06-11 15:04:25,919 WARN org.springframework.scheduling.quartz.LocalDataSourceJobStore.findFailedInstances(3278) - This scheduler instance (2013-20140327IQ1402470062652) is still active but was recovered by another instance in the cluster. This may cause inconsistent behavior.
当使用Quartz的集群功能,当一个 Scheduler 实例执行检入的例程时,它会查看是否有其他的 Scheduler 实例在到达他们所预期的时间还未检入。这是通过检查 SCHEDULER_STATE 表并寻找 Scheduler 记录在 LAST_CHEDK_TIME 列的值是否早于 org.quartz.jobStore.clusterCheckinInterval() 属性值。如果一个或多个节点还没有检入,那么运行中的 Scheduler 就假定它(们) 失败了。
例如默认的CHECKIN_INTERVAL列值是7500 ms,有两台机器,一台机器的时钟慢了8000ms,当Scheduler1加入到SCHEDULER_STATE的时钟是例如是9000,Scheduler2加入到SCHEDULER_STATE的时钟是1000,当7500ms后Scheduler1检查Scheduler2时发现他已经超过了7500ms没有更新了,就会将Scheduler2实例接过这个 Job 重新运行
但是实际上Scheduler2仍然在运行job。所以集群机器之间的时钟不同步会造成这种问题的出现,是非常危险的警告!
具体参考: