这两天遇到个非常怪异的现象,quartz做了分布式持久化,triggerstate在刚要到触发时间点之前就被quartz自行把状态修改为ERROR,导致trigger无法正常触发,quartz的数据库连接测试数据库时,正常,连接生产环境数据库时,异常;
关键信息如下:
1、quartz 版本 1.8.6
2、quartz持久化数据库,测试库A,生产库B,均按照quartz提供的脚本创建的相关表
主要现象:
1、测试环境正常现象:triggerstate 会在该trigger将要到下次触发时间之前把值修改为 ACQUIRED,然后到触发时间点,job正常触发,随后又将该状态修改为 WAITING,表现均正常
2、生成环境异常现象:triggerstate 会在该trigger将要到下次触发时间之前把值修改为 ACQUIRED,然后直接将该值又修改为 ERROR,这样就算到了触发时间点,job也不会执行(根本没触发),该状态就一直为ERROR,且未打印任何异常、报错日志
3、两个环境都使用同一份代码,只是数据库连接指向有区别
主要就是上述现象,折腾了几天了,也未找到原因,所以一直没解决,还请有处理过相关问题的OSCER帮忙看下,谢谢!
是不是表没建对或者编码有问题经验之谈:将两数据库对象结构对比一下 应该会发现问题
回复<aclass='referer'target='_blank'>@java_龙:直接重新创建了一个库,又好了。。。咨询了下,说是可能因为开发机器连了生产数据库的quartz库,开发机器的时间和生产数据库的时间不一致导致导致的quartz内部的异常,总之现在是恢复正常了回复<aclass='referer'target='_blank'>@慢慢成长:表结构对比mysql,对象结构对比,具体是指什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。