博客
关于我
工作流模块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 如何给SQL添加索引
    查看>>
    mysql 字段区分大小写
    查看>>
    mysql 字段合并问题(group_concat)
    查看>>
    mysql 字段类型类型
    查看>>
    MySQL 字符串截取函数,字段截取,字符串截取
    查看>>
    MySQL 存储引擎
    查看>>
    mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
    查看>>
    MySQL 存储过程参数:in、out、inout
    查看>>
    mysql 存储过程每隔一段时间执行一次
    查看>>
    mysql 存在update不存在insert
    查看>>
    Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
    查看>>
    Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
    查看>>
    Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
    查看>>
    Mysql 学习总结(89)—— Mysql 库表容量统计
    查看>>
    mysql 实现主从复制/主从同步
    查看>>
    mysql 审核_审核MySQL数据库上的登录
    查看>>
    mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
    查看>>
    mysql 导入导出大文件
    查看>>
    MySQL 导出数据
    查看>>