环境版本:seata--- 1.5.1

问题:分布式事务没有传递xid导致事务失效解决方案,事务参与者通过RootContext.getXID()没有获取到xid。

解析seata传递原理:

1.在GlobalTransactional方法内发起feign调用,seata会在请求前进行拦截,实现方法在源码

com.alibaba.cloud.seata.feign.SeataFeignClient.getModifyRequest()

,然后再将xid放到请求头里进行传递。

2.feign调用事务参与者,然后到参与者这边它会对请求进行拦截然后绑定xid,实现HandlerInterceptorAdapter,源码如下

3.经过Debug发现,请求头有正常传递xid,但是没有绑定xid,所以断定TransactionPropagationInterceptor没有生效,xid没有传递所以事务没有回滚。

4.为什么没有生效呢?

这个没有去重点关注了,盲猜跟我实现swagger2继承了WebMvcConfigurationSupport有关。

5.解决

再现有的拦截器里加入TransactionPropagationInterceptor的代码,对seata xid进行绑定

io.seata.integration.http.TransactionPropagationInterceptor.preHandle()方法内代码copy到你的拦截器里

看到也是缘分,希望您一切顺利,踩了一堆坑做出来的总结,愿君少走弯路。

seata1.5.1 分布式事务没有传递xid,xid为null,事务参与者获取不到xid导致事务失效解决方案相关推荐

  1. 处理 Seata分布式事务中 没有传递XID 导致事务失效的问题

    问题与解决思路:当业务方法开启全局异常处理器后,TM注册到TC获取到一个XID,此时在业务中,服务远程访问时,此XID会被下面分支业务方法RM接收到,当各个方法处理完成后RM会向TC直接交互把结果通过 ...

  2. seata 分布式事务没有传递xid导致事务失效解决方案

    seata 分布式事务没有传递xid导致事务失效解决方案 当spring cloud 设置全局开启分布式事务,在调用分支事务没有传递xid,原因是feign或者http调用时候 header 没有pu ...

  3. Seata分布式事务控制整合Mybatis-Plus导致事务控制失效

    解决方案 1. pom文件引入Druid数据源 <!--druid--> <dependency> <groupId>com.alibaba</groupId ...

  4. spring事务管理器的作用_【面试必问】Spring中的事务管理详解

    在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...

  5. 一个项目部署多个节点会导致锁失效么_不为人知的分布式锁实现,全都在这里了

    1引入业务场景 首先来由一个场景引入: 最近老板接了一个大单子,允许在某终端设备安装我们的APP,终端设备厂商日活起码得几十万到百万级别,这个APP也是近期产品根据市场竞品分析设计出来的,几个小码农通 ...

  6. MySQL 事务 | ACID、四种隔离级别、并发带来的隔离问题、事务的使用与实现

    文章目录 事务 ACID 并发带来的隔离问题 幻读(虚读) 不可重复读 脏读 丢失更新 隔离级别 Read Uncommitted (读未提交) Read Committed (读已提交) Repea ...

  7. 避坑:@Around与@Transactional混用导致事务无法回滚

    前言 上个月,同事出于好奇在群里问AOP的环绕通知与事务注解混合用会不会导致出现异常不回滚的情况.这个问题我一下子回答不上来,因为平时没这样用过,在好奇心的驱使下,我调试了半天终于得到结果,今天我就展 ...

  8. spring 事务应用误区总结:那些导致事务不回滚的坑

    基于JDBC的 Spring事务在项目中常用来保证数据的一致性, 想要正确的使用,绝不是加一个@Transactional那么简单.最近团队内在排查事务不生效的问题时,就遇到了一个很典型的错误应用的场 ...

  9. java事务中使用try catch 导致事务不回滚的问题

    @Transactional注解的触发,只回滚RuntimeException和Error异常,默认不回滚非RuntimeException异常 解决方法: 1.方法前添加注解(基础的  @Trans ...

最新文章

  1. 观点|重磅出炉!29页《业内观点:机器人行业的未来》
  2. @override代表什么意思_混凝土中C20、HZS180都代表什么意思?
  3. Linux I2C子系统分析-I2C总线驱动
  4. VF02 会计凭证过账时间
  5. iconfont 图标宽高出问题_细节猎人04期 | PPT图标的分类和使用注意事项 上篇
  6. Ribbon源码解析(二)
  7. 发布面向Outlook(RPC)的Exchange Server
  8. oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段
  9. 程序员,35岁是职业发展的转折点 (1)
  10. (六)为时装设计生成训练和运行GAN
  11. flash代码_Flash如何处理常见的代码错误(AS3)(2)
  12. 数据分析中会常犯哪些错误,如何解决? 一
  13. Oct.14 华为数通部算法岗面经
  14. Java8 Stream流 - 高效快速的处理集合
  15. 粗糙集的概念和一些例子
  16. Parasol and GreenSwitch: Managing Datacenters Powered by Renewable Energy
  17. Python订票系统这才是看电影选座的正确方法,原来我们都上当了
  18. 音视频开发系列(15):视频与音频同步
  19. JavaScript(短信验证码)
  20. hive安装:3.1.2版本

热门文章

  1. 联想r720安装固态_分享联想R720重装Win10系统无法识别固态硬盘的解决方案
  2. 打新盛宴结束,HT未来之路如何?
  3. Andiod 是什么
  4. Android开发_SharePreferences
  5. 算法推荐规制!《互联网信息服务算法推荐管理规定(征求意见稿)》公开征求意见
  6. Windows/Android/iOS平台H265编码视频播放器EasyPlayerPro支持高码率视频播放和D3D画面旋转代码参考
  7. 迷茫吗?30岁之前你一定要做这三件事
  8. c语言消消看算法,论消去游戏中的数据结构与算法.doc
  9. Nature Microbiology | SeqCode:基于序列数据描述的原核生物命名规则
  10. 51单片机仿真——定时器控制单只数码管显示0—9