Open
Description
复现条件:就用提供的demo,非simplified模式tcc,try阶段正常,provider端在confirm中抛异常,过一段时间provider端的cancel逻辑会被错误的调用。
初步分析:provider端会定时调度方法org.bytesoft.bytetcc.TransactionRecoveryImpl#branchRecover,此方法会去调用consumer端的/revocer接口,但拿到的是一个空xidArray,后续一系列逻辑会导致provider端的cancel逻辑被调用,代码如下:
consumer端/recover接口相关代码如下:
最关键的就是这里为啥consumer端的getTransactionRepository得到的transactionList为空?
附上我用的demo:
链接: https://pan.baidu.com/s/1Sr0mk9O58VehoxFnHAlINQ 提取码: f6pz
Metadata
Metadata
Assignees
Labels
No labels