问题一:Seata中fegin调用,项目中有全局异常捕获没法回滚。有什么好的解决方案吗?
Seata中fegin调用,项目中有全局异常捕获没法回滚。有什么好的解决方案吗?
问题二:Seata中插入后在模拟异常打了断点,update这条插入的数据事务就无法正确回滚,这是什么原因呀?
Seata中seata版本:v1.4.0,插入后在模拟异常打了断点(还未执行异常),但是在数据库能看到这条记录,然后通过另一个接口update这条插入的数据,事务就无法正确回滚,这是什么原因呀?
参考回答:
检查事务xid传递,和你自己本地事务是否生效。
问题三:Seata中通过feign去扣减商品库存,回到订单服务后抛出异常。是还有哪些东西需要注意的吗?
Seata中通过feign去扣减商品库存,回到订单服务后抛出异常。订单的数据回滚了,但是商品服务的数据没有回滚,是还有哪些东西需要注意的吗?
参考回答:
没有。
问题四:在seata发起分支提交获取分支提交结果的时候,报了一个异常,导致分支没被移除是怎么回事呀?
在seata发起分支提交获取分支提交结果的时候,报了一个异常,导致分支没被移除(这时候其实rm二阶段提交成功了),这时候定时器handleRetryCommitting,就扫描到还存在globalSession,然后继续doGlobalCommit,然后就出现xaer-nota的情况了,是怎么回事呀?
参考回答:
你看你日志输出时间点,还有如果你client当时打着断点去看很可能链接是断开,tc拿不到status就重试了,不过不影响一致性,只是不断下发一个不存在的事务提交,60秒后就直接全局事务提交了。
问题五:seata如果是服务a,调用服务b,服务b被调用后,服务a中发生异常,服务b相关操作会回滚吗?
seata如果是服务a,调用服务b,服务b被调用后,服务a中发生异常,服务b相关操作会回滚吗?服务a与服务b的相关方法上都需要添加@GlobalTransactional 注解对吗?
参考回答:
无论谁出异常,只要符合回滚条件,tm都会决议回滚。都可以加,一般是服务调用入口加,但是大多数情况下,服务a和服务b都可能作为服务调用入口,所以都加上肯定没问题。