V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kikione
V2EX  ›  Java

spring 事务问题

  •  1
     
  •   kikione · 232 天前 · 2112 次点击
    这是一个创建于 232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两个 Service A 的方法 A 没有加 @Transactional 和 Service B ;

    Service A 的方法 A 没有加 @Transactional

    Service B 的方法 B 添加 @Transactional

    方法 A 调用方法 B ,方法 B 出错,抛出全局异常,

    为什么会去回滚到 controller 里,再执行一次。

    相当于 B 抛出全局异常后, 这个接口执行了两遍

    第 1 条附言  ·  232 天前
    两个 Service A 和 Service B ;

    第一句
    17 条回复    2021-11-15 14:09:59 +08:00
    Hurriance
        1
    Hurriance  
       232 天前
    回滚到 controller ? debug 的过程是怎样的
    kikione
        2
    kikione  
    OP
       232 天前
    @Hurriance debug 就是 抛出异常后,又从 controller 执行一遍,我把 @Transactional 放在方法 A ,就不会重复执行了,直接返回异常
    kikione
        3
    kikione  
    OP
       232 天前
    @Hurriance 不太清楚什么原理
    Hurriance
        4
    Hurriance  
       232 天前
    可以的话,贴个代码吧
    thetbw
        5
    thetbw  
       232 天前
    应该是代码写的问题的,看看是不是接口哪里掉了两次,事务仅仅是数据库层面的回滚吧
    nonoyang
        6
    nonoyang  
       232 天前 via iPhone   ❤️ 5
    刚下班,我他妈连第一句都看不懂……
    ZeawinL
        7
    ZeawinL  
       232 天前
    没下班, 第一句我也看不懂......
    kikione
        8
    kikione  
    OP
       232 天前
    @nonoyang 第一句写错了 我的
    clf
        9
    clf  
       232 天前
    你怎么判断 Controller 接口执行了两次的?

    另外建议贴代码。
    siweipancc
        10
    siweipancc  
       232 天前 via iPhone
    控制层打印一下当前线程 id
    NutChocHoney
        11
    NutChocHoney  
       232 天前
    断点放掉的一瞬间又有人走这个方法了吧
    yqsas
        12
    yqsas  
       232 天前 via iPad
    猜测 serviceA 那边开启了调用异常,自动重试功能
    cp19890714
        13
    cp19890714  
       232 天前
    你提出了两个问题。
    1. 事务回滚到了 controller ,也就是说 A 中的数据也回滚了。
    2. controller 执行了两次

    回答:
    1. 请说明你的证据
    2. 最大可能就是异常触发重试
    LeeSeoung
        14
    LeeSeoung  
       231 天前
    大概率是用的框架做了重试。。
    leatomic
        15
    leatomic  
       230 天前
    只能说 talk is cheap 了
    tedzhou1221
        16
    tedzhou1221  
       229 天前
    你可以 debug 一下,看看整个调用栈的过程
    notwaste
        17
    notwaste  
       222 天前
    盲猜用了 spring retry
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1289 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:59 · PVG 07:59 · LAX 16:59 · JFK 19:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.