一报错

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文件中留下一些回滚数据。为了避免这种情况的发生,应尽可能避免强制重启应用,同时在设计应用时,要充分考虑多数据源分布式事务的一致性和可靠性,采用合适的解决方案来保证分布式事务的正确执行。

更多推荐