博客
关于我
工作流模块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之SQL语句优化步骤
    查看>>
    MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
    查看>>
    Mysql之主从复制
    查看>>
    MySQL之函数
    查看>>
    mysql之分组查询GROUP BY,HAVING
    查看>>
    mysql之分页查询
    查看>>
    Mysql之备份与恢复
    查看>>
    mysql之子查询
    查看>>
    MySQL之字符串函数
    查看>>
    mysql之常见函数
    查看>>
    Mysql之性能优化--索引的使用
    查看>>
    mysql之旅【第一篇】
    查看>>
    Mysql之索引选择及优化
    查看>>
    mysql之联合查询UNION
    查看>>
    mysql之连接查询,多表连接
    查看>>
    mysql乐观锁总结和实践 - 青葱岁月 - ITeye博客
    查看>>
    mysql也能注册到eureka_SpringCloud如何向Eureka中进行注册微服务-百度经验
    查看>>
    mysql乱码
    查看>>
    Mysql事务。开启事务、脏读、不可重复读、幻读、隔离级别
    查看>>
    MySQL事务与锁详解
    查看>>