分佈式事務Seata事務失效場景

1、用於非public的方法上 default、protected、private 都不行

2、分支事務內捕獲異常未拋出且返回TM未處理的結果 例如A接口調用了feignB和feignC的接口,B正常成功執行,C捕獲了異常但是未拋出,A也沒C的返回結果判斷是否正常執行。

3、分支事務加了spring的@Transactional註解,則出現異常由spring rollback,其餘分支事務正常提交或回滾 例如A接口調用了feignB和feignC的接口,feignB未加@Transactional,feignC加了@Transactional,C出現異常時,會在A回滾事務前回滾C自己的事務。

4、異常類型不一致 例如拋出的是GlobalTransactionException,但是rollbackFor的是NullPointerException,也不會回滾。

5、一個類裏面的第二層調用方法用全局事務不會生效 例如serviceA.methodA() 調本類的methodB ,方法B上面使用全局事務失效 需要新建一個serviceB,將全局事務方法methodB寫在serviceB裏,methodA調用serviceB.methodB() 纔會生效

6、全局事務內的分支事務創建或修改的數據會有相應的undo_log記錄,如果提交或回滾前,數據被修改,導致undo_log的記錄數據與庫裏的數據不一致,會一直重試回滾。

7、異步接口處理出現異常,不會影響全局事務

8、未加包掃描 @MapperScan

9、數據庫引擎不支持事務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章