数据库集群下,系统使用了​​​​​​​Activiti后审批节点大概率无法提交,抛出不一致无法校验的异常情况

在使用数据库集群后,突然发现审批流的大部分节点无法提交。在研究报错定义扒取源码逻辑后,又参考运行环境,猜测是由于数据库集群导致。

1、了解了源码逻辑后发现:审批流Activiti在提交审批时,操作的act表有很多,快速的读写、读写。然而读写时会有数据的版本码,比如act表里,同一条审批的数据会有version字段的1、2、3......等数据去控制。提交审批时存进去的是版本3的数据,再业务处理后又去取存的数据,版本对的上,继续往下进行,不一致抛出异常。

2、针对于1的发现,什么情况会导致?在一瞬间就猜测,数据库集群开启的是读写分离,写到主机,读取都走从机。验证尝试切换一种模式后发现问题消失。

总结:数据库集群主从同步需要一定时间,再快也有时间。当开启读写分离后,审批流提交,把数据和版本号写入A库,这时还没来得及同步到B库。又去读取时,走的是B库,取出来的数据版本无法对应上,导致Activiti的校验被触发,抛出异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀熊熊队长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值