-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
客户端数据没有进行回滚 #2
Comments
你主要观察一下参与模块的日志信息,看一下参与模块有没有参与到事务中。正常会看到tx-running-start end 的日志打印。再就是提交或者回滚的日志打印消息 |
@1991wangliang 看了下客户端日志,start 和 end 是有的,但是没有回滚相关的信息。
倒是服务端没有 start end 这些信息。 |
tx-start、tx-end 是客户端(启动方)的日志,tx-running-start/tx-running-end 是服务(参与方)的日志,你的参与方没有这样的日志那么首先怀疑你的参与方没有配置好,可能与你的配置有关系。再就是你的发起方既然有日志了 但是没有回滚,是由于你客户端发起并没有出现异常,你只是走了fallback而已。(LCN本身不会创建事务的,只是会协调事务) |
{"a":"ctg","k":"wMHBuV7C","p":{"s":1,"g":"VIvaGzTf"}} 协议文档有介绍,其中s标示的事务模块正常执行。非异常状态,这也是不会回滚事务的 |
@1991wangliang |
那说明应该是你在发起方的时候没有将数据传递给参与方模块(groupId),你可以在configuration下的配置requestintercept是否将数据传递出去。可以加断点看一下。怀疑你这里是多线程的方式调用的,threadlocal就拿不到数据了. |
@1991wangliang 修改之后,果然参与方出现了相关日志。。。
但是发起方仍未做回滚。。。
也就是说,发起方必须手动抛出异常,才能引发回滚操作,而不是tx-manager通过消息通知触发? |
是的,只有触发异常才会执行回滚的。 |
@1991wangliang 原来如此,了解了,感谢。 |
@1991wangliang 再咨询一个问题。。。
更新一下,上面的描述不对, |
看一下tx-start的打印日志 |
@1991wangliang 刚才更新了一下描述。。。
日志方面的话:
|
参与方模块应该会有提交或者回滚的指令数据吧?你现在tx-start状态确实是回滚的状态。 |
@1991wangliang |
ok 好的 |
参考spring cloud的demo做了一下测试,服务端异常后,客户端没有进行回滚。。。
服务端和客户端的service代码都比较简单。
主要不同的地方在于:
请问问题有可能出现在哪里呢?
The text was updated successfully, but these errors were encountered: