seata无限失败重试Failed to retry rollbacking Unknown java.lang.RuntimeException: rm client is not connect
·
一报错
seata无限失败重试:
16:32:53.783 INFO --- [ RetryRollbacking_1_1] i.s.s.coordinator.DefaultCoordinator : Failed to retry rollbacking [192.168.2.41:8091:5332678625262792799] Unknown java.lang.RuntimeException: rm client is not connected. dbkey:jdbc:mysql://ip:port/XXX,clientId:XXX
二分析
根据错误信息,可以看出是在SeaTa的协调者(DefaultCoordinator)进行重试回滚操作时出现了问题。具体地说,它在尝试回滚一个分布式事务时,与事务的参与者(rm client)失去了连接,导致无法完成回滚操作。
三产生原因
在多数据源分布式事务下,事务尚未执行完成强制重启应用,导致 /bin/sessionStore/root.data 中含有回滚数据 ,但是连接的 数据库url是错误的,导致无限失败重试
四解决办法
将其修改掉或者直接删除后,重新启动seata即可
1.linux
如查找到所在目录/opt/seata-server-1.5.2/bin/sessionStore/root.data
find / -name root.data
rm -rf root.data
2.windows所在目录

总结
在多数据源分布式事务下,如果应用在事务执行过程中被强制重启,还没有来得及完成事务提交或回滚操作时,可能会导致一些数据没有正确的提交或回滚,从而出现数据不一致的情况。这种情况下,可能会在/bin/sessionStore/root.data文件中留下一些回滚数据。为了避免这种情况的发生,应尽可能避免强制重启应用,同时在设计应用时,要充分考虑多数据源分布式事务的一致性和可靠性,采用合适的解决方案来保证分布式事务的正确执行。
更多推荐


所有评论(0)