你好请问一下,我碰到个问题:没有并发,单个更新语句,每次对值 +1,比如执行第一次之后的值为2,记?

回答1:你好请问一下,我碰到个问题:没有并发,单个更新语句,每次对值 +1,比如执行第一次之后的值为2,记录的afterImage是2,执行第二次之后的值为3,记录的afterImage是3,回滚的时候通过dataValidationAndGoOn方法比较,第一次的afterImage(2)跟当前值(3)肯定对不上啊?请问下这个是我理解有误还是用法不对呢?最终会一直报错脏写Has dirty records when undo.,无法回滚。seata版本:1.6.1c7042e9386fe2011182d7bdcbb794817.png 回答2:没有并发,只是单次请求里的for循环,每次对值加1,回滚能拿到全局锁,问题是afterimage和当前值的对比逻辑,为啥我这边日志里都是拿一个老的afterimage的值跟最新值比较呢,比如上面例子的2跟3

展开
收起
真的很搞笑 2023-06-21 10:52:50 90 分享 版权
1 条回答
写回答
取消 提交回答
  • 回答1:全局锁锁着,不可能出现这种问题 回答2:大概率tc的branch table的datetime没加精度,此回答整理自钉群“3群-Seata 开源讨论群”

    2023-06-21 12:58:53
    赞同 展开评论

为企业提供高效、稳定、易扩展的中间件产品。

还有其他疑问?
咨询AI助理