4
如下图所示,我在confirm方法,直接调用了全局事务回滚,却返回的是committing状态,无法触发A服务自己的cancel方法,也无法触发B服务的cancel方法
- JDK version : 1.8
- Seata version: 1.5.2
- OS : macOS
- Others:
如下图所示,我在confirm方法,直接调用了全局事务回滚,却返回的是committing状态,无法触发A服务自己的cancel方法,也无法触发B服务的cancel方法
参与者没有权利回滚事务
而且你这个都是confirm了,怎么可能可以回滚事务,都已经进入了二阶段,不允许这种操作,假设二阶段 第一个rm提交了,第二个执行了回滚,一致性怎么保证?
恍然大悟
多问一句,如果在二阶段,发生异常,该怎么办? @a364176773
tcc的原理是预留资源使用资源,既然资源能被预留必然能被使用,如果不能使用肯定是二阶段方法里写了其他的动作,把代码修正,tc会重试直到二阶段方法执行成功