[seata]seata1.5.2 TCC模式,全局事务回滚无法触发

2024-07-15 575 views
8

如下图所示,我在confirm方法,直接调用了全局事务回滚,却返回的是committing状态,无法触发A服务自己的cancel方法,也无法触发B服务的cancel方法 image

  • JDK version : 1.8
  • Seata version: 1.5.2
  • OS : macOS
  • Others:

回答

9

参与者没有权利回滚事务

7

而且你这个都是confirm了,怎么可能可以回滚事务,都已经进入了二阶段,不允许这种操作,假设二阶段 第一个rm提交了,第二个执行了回滚,一致性怎么保证?

4

恍然大悟

2

多问一句,如果在二阶段,发生异常,该怎么办? @a364176773

8

tcc的原理是预留资源使用资源,既然资源能被预留必然能被使用,如果不能使用肯定是二阶段方法里写了其他的动作,把代码修正,tc会重试直到二阶段方法执行成功