两个 Service A 的方法 A 没有加 @Transactional 和 Service B ;
Service A 的方法 A 没有加 @Transactional ;
Service B 的方法 B 添加 @Transactional ;
方法 A 调用方法 B ,方法 B 出错,抛出全局异常,
为什么会去回滚到 controller 里,再执行一次。
相当于 B 抛出全局异常后, 这个接口执行了两遍
1
Hurriance 2021 年 11 月 5 日
回滚到 controller ? debug 的过程是怎样的
|
2
kikione OP @Hurriance debug 就是 抛出异常后,又从 controller 执行一遍,我把 @Transactional 放在方法 A ,就不会重复执行了,直接返回异常
|
4
Hurriance 2021 年 11 月 5 日
可以的话,贴个代码吧
|
5
thetbw 2021 年 11 月 5 日
应该是代码写的问题的,看看是不是接口哪里掉了两次,事务仅仅是数据库层面的回滚吧
|
6
nonoyang 2021 年 11 月 5 日 via iPhone 刚下班,我他妈连第一句都看不懂……
|
7
ZeawinL 2021 年 11 月 5 日
没下班, 第一句我也看不懂......
|
9
clf 2021 年 11 月 5 日
你怎么判断 Controller 接口执行了两次的?
另外建议贴代码。 |
10
siweipancc 2021 年 11 月 5 日 via iPhone
控制层打印一下当前线程 id
|
11
NutChocHoney 2021 年 11 月 5 日
断点放掉的一瞬间又有人走这个方法了吧
|
12
yqsas 2021 年 11 月 5 日 via iPad
猜测 serviceA 那边开启了调用异常,自动重试功能
|
13
cp19890714 2021 年 11 月 6 日
你提出了两个问题。
1. 事务回滚到了 controller ,也就是说 A 中的数据也回滚了。 2. controller 执行了两次 回答: 1. 请说明你的证据 2. 最大可能就是异常触发重试 |
14
LeeSeoung 2021 年 11 月 6 日
大概率是用的框架做了重试。。
|
15
leatomic 2021 年 11 月 7 日
只能说 talk is cheap 了
|
16
tedzhou1221 2021 年 11 月 8 日
你可以 debug 一下,看看整个调用栈的过程
|
17
notwaste 2021 年 11 月 15 日
盲猜用了 spring retry
|