博客
关于我
工作流模块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/

    你可能感兴趣的文章
    Mtab书签导航程序 LinkStore/getIcon SQL注入漏洞复现
    查看>>
    myeclipse配置springmvc教程
    查看>>
    MyEclipse配置SVN
    查看>>
    MTCNN 人脸检测
    查看>>
    MyEcplise中SpringBoot怎样定制启动banner?
    查看>>
    MyPython
    查看>>
    MTD技术介绍
    查看>>
    MySQL
    查看>>
    MySQL
    查看>>
    mysql
    查看>>
    MTK Android 如何获取系统权限
    查看>>
    MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
    查看>>
    MySQL - ERROR 1406
    查看>>
    mysql - 视图
    查看>>
    MySQL - 解读MySQL事务与锁机制
    查看>>
    MTTR、MTBF、MTTF的大白话理解
    查看>>
    mt_rand
    查看>>
    mysql -存储过程
    查看>>
    mysql /*! 50100 ... */ 条件编译
    查看>>
    mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
    查看>>