Open 0x9bb1 opened 1 month ago
4555
恕我愚钝...这是为hook添加了xid参数,这似乎与我的case关系不大,麻烦再提点一下
4555
恕我愚钝...这是为hook添加了xid参数,这似乎与我的case关系不大,麻烦再提点一下
通过xid区分不同的hook,就不会因为事务嵌套,导致前者的hook被调用 如果你不是事务嵌套,尝试升级下版本,或者查看release note看看该问题是否已经被修复
4555
恕我愚钝...这是为hook添加了xid参数,这似乎与我的case关系不大,麻烦再提点一下
通过xid区分不同的hook,就不会因为事务嵌套,导致前者的hook被调用 如果你不是事务嵌套,尝试升级下版本,或者查看release note看看该问题是否已经被修复
我不是嵌套,我是tomcat线程复用导致前一事务设置的hook,被后一事务回滚后触发了。我去看看release note
我在release note中没有发现有提到该问题的
再补充一些细节,我的case不存在事务嵌套。是同一线程的不同时刻前者事务提交后,不知道为什么hook没有清理,导致下一个事务回滚的时候,将上一个事务放置的hook执行了。
而且本地debug也没有复现,所以没法提供一下最小可复现的case,但是我可以确认存在这种情况
看代码io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction
的finally中确实clear了不知道为什么
后面有遇到相同case的小伙伴麻烦圈一下我
我在release note中没有发现有提到该问题的 再补充一些细节,我的case不存在事务嵌套。是同一线程的不同时刻前者事务提交后,不知道为什么hook没有清理,导致下一个事务回滚的时候,将上一个事务放置的hook执行了。 而且本地debug也没有复现,所以没法提供一下最小可复现的case,但是我可以确认存在这种情况 看代码
io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction
的finally中确实clear了不知道为什么 后面有遇到相同case的小伙伴麻烦圈一下我
可以先尝试升级下看看
我在release note中没有发现有提到该问题的 再补充一些细节,我的case不存在事务嵌套。是同一线程的不同时刻前者事务提交后,不知道为什么hook没有清理,导致下一个事务回滚的时候,将上一个事务放置的hook执行了。 而且本地debug也没有复现,所以没法提供一下最小可复现的case,但是我可以确认存在这种情况 看代码
io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction
的finally中确实clear了不知道为什么 后面有遇到相同case的小伙伴麻烦圈一下我可以先尝试升级下看看
好的 我这先先升级后观察观察
I have always had a different opinion on this design. I think that the hook should not be thread-local but rather at the method granularity.
Ⅰ. Issue Description
Ⅱ. Describe what happened
[http-nio-8089-exec-14]
在添加TransactionHook
,实现afterRollback
方法。事务1成功提交。[http-nio-8089-exec-14]
执行了afterRollback
方法内逻辑。Ⅲ. Describe what you expected to happen
Ⅳ. How to reproduce it (as minimally and precisely as possible)
Minimal yet complete reproducer code (or URL to code):
Ⅴ. Anything else we need to know?
Ⅵ. Environment:
java -version
):1.8uname -a
):