因数据库锁表导致quartz无法更新数据库而报错,流程未调度。根据异常信息定位到quartz源码报错位置。

https://blog.csdn.net/shy_snow/article/details/110367639

Quartz原理解密https://www.cnblogs.com/Dorae/p/9357180.html
结合网上介绍和源码分析为触发器更新事务失败。MisfireHandler线程会定时(50s)处理超时未触发的触发器,并根据misfire策略恢复触发器。但不知道设置misfire策略的地方以及misfire策略处理逻辑。下面查找misfire处理的代码

触发misfire监听后调用updateAfterMisfire处理

updateAfterMisfire方法在CronTrigger触发器的实现如下


Instr=1的时候就是那个ONCE_NOW,它把下次执行时间更新为当前时间了,立马会被拉起执行。
Instr=2的时候就是DO_NOTHING那个,它是正常更新下次执行时间,也就是什么也不做等到下次执行时间的时候继续执行。getFireTimeAfter返回触发器下一次将要触发的时间,如果在给定(参数)的时间之后,触发器不会再被触发,那么返回null。

那这个misfireInstruction属性在哪里设置的呢?

查找misfireInstruction属性引用发现,这个是每个触发器都有一个单独设置,在设置调度的时候设置的,保存在trigger表的MISFIRE_INSTR字段中。只要设置这个misfire为1就可以在misfire之后立即调用一次。

new CronTrigger().setMisfireInstruction(CronTrigger.MISFIRE_INSTRUCTION_FIRE_ONCE_NOW);

测试方法:

关闭自动提交,开启事务,修改触发器表,不提交事务,阻塞quartz更新触发器表,quartz调度异常无法正常更新该触发器, 等待调度时间超时之后再commit放开表阻塞。

quartz锁表misfire的处理策略设置相关推荐

  1. 智能排班系统、班次、班表、考勤、年假、调休、审批、请假、培训、值班、换班、加班、工时、自动排班、智能预测、人力需求预测、授权、团队、锁定量排、规则权重设置、菜单、角色、数据监控、工作台、axure

    智能排班系统.班次.班表.考勤.年假.调休.审批.请假.培训.值班.换班.加班.工时.自动排班.智能预测.人力需求预测.授权.团队.锁定量排.规则权重设置.菜单.角色.数据监控.工作台.axure原型 ...

  2. mysql锁表与不锁表设置主从复制的方法

    有时候MySQL主从同步不一致比较严重的时候,需要手动同步. 先说说在锁表的情况下如何操作: 以下是其简要过程 1.先对主库锁表 FLUSH TABLES WITH READ LOCK; 2.备份数据 ...

  3. 如何才能监控查看出注册表更改情况,本地组策略设置更改了哪些注册表对应值?

    环境: Win11 专业版 HP480G7 Windows Sysinternals Suite 问题描述: 如何才能监控查看出注册表更改情况,本地组策略设置更改了哪些注册表对应值? 解决方案: 1. ...

  4. mysql查询更新时的锁表机制分析

    为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. 一.概述 MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采用的是表级锁( ...

  5. oracle 锁表如何解决_Java高并发解决什么方式

    对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究 ...

  6. MySQL死锁问题如何分析锁表后查看死锁和去除死锁快速解决方法

    (1) 遇到锁表快速解决办法 依次执行1-6步,运行第6步生成的语句即可. 如果特别着急,运行 1 2 6 步 以及第6步生成的kill语句 即可. 1.  第1步 查看表是否在使用. show op ...

  7. insert 锁表 mysql_mysql insert锁机制【转】

    最近再找一些MySQL锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便 ...

  8. Quartz数据库表分析

    前言 上一篇文章Spring整合Quartz分布式调度介绍了Quartz通过数据库的方式来实现分布式调度,通过使用数据库来存储trigger,job等信息,可以在停服重启的时候重新加载上次trigge ...

  9. MySQL锁表解决方法(转)

    MySQL锁表解决方法 一.我的处理过程 1.查进程,主要是查找被锁表的那个进程的ID SHOW PROCESSLIST; 2.kill掉锁表的进程ID KILL 10866;//后面的数字即时进程的 ...

最新文章

  1. 各种优化算法公式快速回忆优化器-深度学习
  2. 三年级优秀书籍推荐_西关小学书画比赛优秀作品展 绘画组(四)
  3. Tempdb数据库详细介绍
  4. vue树形结构html,怎么在vue中利用递归组件实现一个树形控件
  5. python字符串写入excel-Python向excel中写入数据的方法
  6. 【shell】wc命令
  7. 统计学习:方差分析(ANOVA2)
  8. Qmake变量variable
  9. WinForm 限制同一个进程只能打开一次
  10. 闲鱼研发框架应用和探索
  11. 2021中国新锐品牌发展研究:食品饮料行业报告
  12. 登录drupal管理员_天气公司依靠Drupal来管理内容
  13. CSM中一些常见问题的解决方式
  14. 省选专练【POI2015】Podzial naszyjnika
  15. 2020年的UI设计师需要会什么软件
  16. 记录TI电量计采集化学ID过程
  17. 微信账户体系科普:什么是UnionId、OpenId与wxopenid?
  18. 网络营销---春节营销案例
  19. 苹果屏幕旋转怎么设置_笔记本电脑维修|笔记本电脑屏幕旋转90度怎么复原
  20. 802.11 wireless 详解

热门文章

  1. 【方案分享】地产项目2022年新春1月系列暖场活动策划方案:新年置业,如虎添翼.pptx(附下载链接)...
  2. 剑指offer 面试题58 - II. 左旋转字符串
  3. CIKM'21「eBay」推荐系统--利用超图对商品的多模态信息建模
  4. Leetcode每日一题:155.min-stack(最小栈)
  5. C++实现简单的二叉树
  6. 三种代理服务器以及反向代理详解
  7. Linux ext4文件系统下 extundelete 恢复 误删除的文件
  8. DragControl
  9. jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置
  10. db2数据库日期减一天_DB2 日期时间函数