博客
关于我
工作流模块Jar包启动报错:liquibase - Waiting for changelog lock....
阅读量:824 次
发布时间:2019-03-24

本文共 1250 字,大约阅读时间需要 4 分钟。

工作流模块Jar包启动报错问题分析及解决方案

1. 工作流模块Jar包启动报错

近期在工作流模块部署时,出现了以下错误日志:

2021-02-14 13:45:13.735 [main] INFO  liquibase - Waiting for changelog lock....

多个类似的日志提示,系统正在尝试获取数据库的锁定记录,但网络中出现卡顿或程序未正常结束,导致锁定状态未能及时解除。


2.故障原因分析

经过排查发现,主要问题出现在数据库层面。具体表现为:

  • 工作流相关的表字段完全锁定,导致后续操作无法继续。
  • 可能是程序生命周期未正常终止,导致锁定状态未解除。

3 表锁定异常及解决方法

根据经验,这类异常通常与数据库的事务锁有关,需通过查询锁定状态确保锁定记录清理完毕。以下是具体操作方法:

  • 执行以下SQL命令查看锁定状态:
  • SELECT * FROM DATABASECHANGELOGLOCK;
    1. 检查锁定记录,找到对应的锁定ID(如id=1),执行以下语句解除锁定:
    2. UPDATE DATABASECHANGELOGLOCK SET locked=0, lockgranted=null, lockedby=null WHERE id=1;

      注意:上述操作需根据实际情况调整锁定的ID和表结构,不能擅自修改未知ID的锁定记录,否则可能引发更严重的数据库问题。


      4 经验总结及预防建议

      在日常开发过程中,建议采取以下预防措施:

      1. 定期进行pipeline清理

      • 在部署流程结束后,进入机器人终止命令(/<bot> shutdown)以确保程序生命周期正常结束。
      • 定期清理旧的数据库锁定记录,避免积累潜在问题。

      2. 及时处理锁定异常

      • 若在锁定过程中遇到网络中断或异常终止,及时重新启动程序并检查锁定状态。-拓扑排序

      3. 配置合理事务隔离级别

      • 根据业务需求合理设置事务隔离级别,避免长时间锁定状态导致的严重性能问题。

      5. 相关表结构清理方法

      如表结构中涉及多个锁定记录,需逐一检查并进行处理。具体操作可参考以下步骤:

      1.连接数据库终端,执行如下命令循环清理锁定记录:

      -- 列出所有锁定记录SELECT * FROM DATABASECHANGELOGLOCK;

      2.对每个锁定记录执行解除锁定操作:

      -- 示例:假设id=1为需要清理的记录UPDATE DATABASECHANGELOGLOCK SET locked=0, lockgranted=null, lockedby=null WHERE id=1;
      1. 所有锁定记录处理完毕后,重新启动工作流服务。

      2. 6. 合理设计数据库连接池

        为避免类似问题再次发生,建议在数据库连接池层面设置超时时间,确保在短时间内能自动回收未完成事务的连接。


        7. 系统响应优化

        根据系统负载情况,适当优化前台处理逻辑,减少不必要的异步操作,提高系统的吞吐量和稳定性。


        通过以上方法,可以有效解决数据库锁定异常问题,确保工作流模块平稳运行。

    转载地址:http://hdgkk.baihongyu.com/

    你可能感兴趣的文章
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>