QNJR-GROUP / EasyTransaction

A distribute transaction solution(分布式事务) unified the usage of TCC , SAGA ,FMT (seata/fescar AutoCompensation), reliable message, compensate and so on;
Apache License 2.0
2.36k stars 809 forks source link

RPC模式下的主事务提交后RPC服务confirm或者cancel异常情况下外抛异常是怎么处理的? #119

Open caoyangjie opened 5 years ago

caoyangjie commented 5 years ago

阅读了大佬的源码,不知是否我代码没可以看到位还是怎么样?关于RPC模式下的主事务提交后RPC服务confirm或者cancel异常情况下外抛异常是怎么处理的?代码没看到有对这一块做处理

caoyangjie commented 5 years ago

在TransactionHook下异步启动的ConsistentGuardian.process函数中,调用publishDemiLogEvent执行 TccMethodExecutor的onDismatch方法 如果rpcClient.callWithNoReturn 中外抛异常,貌似没有做处理。这种情况下,ET是如何让注释回滚的?没有找到具体的逻辑处理代码。这里是不是会导致 主事务提交了而从服务的confirm或者cancel执行失败?

skyesx commented 5 years ago

代码在这里

https://github.com/QNJR-GROUP/EasyTransaction/blob/master/easytrans-core/src/main/java/com/yiqiniu/easytrans/recovery/ConsistentGuardianDaemon.java