[seata]TCC 开启 useTCCFence,dubbo 远程调用的接口仍然有两次提交记录

2023-12-11 789 views
2
Ⅰ. 问题描述

账户服务和库存服务使用TCC模式,测试时打印调用提交记录,发现seata调用了两次。而本地调用的服务使用TCC模式就不会

二. 描述发生了什么

SeataDemo 服务 图像 图像 图像 本地服务一次提交记录 图像 库存服务(TCC 业务代码) 图像 图像 有两次提交记录 图像 账户服务(TCC 业务代码) 图像 图像 有两次提交记录 图像 如果出现异常,请附上异常跟踪:

Just paste your stack trace here!
三.描述你预计会发生什么 IV. 如何重现它(尽可能最少且精确)
  1. xxx
  2. xxx
  3. xxx

最小但完整的重现器代码(或代码的 URL):

Ⅴ. 还有什么我们需要知道的吗? Ⅵ. 环境:
  • JDK版本(例如java -version):java JDK1.8
  • Seata客户端/服务器版本:seata1.7.1
  • 数据库版本:mysql
  • 操作系统(例如uname -a):macOS
  • 其他的:

回答

7
图像

tcc_fence_log表也有配额记录

3

如果方便的话,请提供完整的测试demo。

1

tcc反暂停中的幂等性是维护两阶段幂等性,而不是一级幂等性

8

一阶段的时候已经产生了两个分支了,由于branchid是TC分配的,所以只要rm的方法体能够进入就会产生,你应该在rm的一阶段之前自己做幂等了