seata1.5.1 分布式事务没有传递xid,xid为null,事务参与者获取不到xid导致事务失效解决方案
环境版本: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导致事务失效解决方案相关推荐
- 处理 Seata分布式事务中 没有传递XID 导致事务失效的问题
问题与解决思路:当业务方法开启全局异常处理器后,TM注册到TC获取到一个XID,此时在业务中,服务远程访问时,此XID会被下面分支业务方法RM接收到,当各个方法处理完成后RM会向TC直接交互把结果通过 ...
- seata 分布式事务没有传递xid导致事务失效解决方案
seata 分布式事务没有传递xid导致事务失效解决方案 当spring cloud 设置全局开启分布式事务,在调用分支事务没有传递xid,原因是feign或者http调用时候 header 没有pu ...
- Seata分布式事务控制整合Mybatis-Plus导致事务控制失效
解决方案 1. pom文件引入Druid数据源 <!--druid--> <dependency> <groupId>com.alibaba</groupId ...
- spring事务管理器的作用_【面试必问】Spring中的事务管理详解
在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...
- 一个项目部署多个节点会导致锁失效么_不为人知的分布式锁实现,全都在这里了
1引入业务场景 首先来由一个场景引入: 最近老板接了一个大单子,允许在某终端设备安装我们的APP,终端设备厂商日活起码得几十万到百万级别,这个APP也是近期产品根据市场竞品分析设计出来的,几个小码农通 ...
- MySQL 事务 | ACID、四种隔离级别、并发带来的隔离问题、事务的使用与实现
文章目录 事务 ACID 并发带来的隔离问题 幻读(虚读) 不可重复读 脏读 丢失更新 隔离级别 Read Uncommitted (读未提交) Read Committed (读已提交) Repea ...
- 避坑:@Around与@Transactional混用导致事务无法回滚
前言 上个月,同事出于好奇在群里问AOP的环绕通知与事务注解混合用会不会导致出现异常不回滚的情况.这个问题我一下子回答不上来,因为平时没这样用过,在好奇心的驱使下,我调试了半天终于得到结果,今天我就展 ...
- spring 事务应用误区总结:那些导致事务不回滚的坑
基于JDBC的 Spring事务在项目中常用来保证数据的一致性, 想要正确的使用,绝不是加一个@Transactional那么简单.最近团队内在排查事务不生效的问题时,就遇到了一个很典型的错误应用的场 ...
- java事务中使用try catch 导致事务不回滚的问题
@Transactional注解的触发,只回滚RuntimeException和Error异常,默认不回滚非RuntimeException异常 解决方法: 1.方法前添加注解(基础的 @Trans ...
最新文章
- 观点|重磅出炉!29页《业内观点:机器人行业的未来》
- @override代表什么意思_混凝土中C20、HZS180都代表什么意思?
- Linux I2C子系统分析-I2C总线驱动
- VF02 会计凭证过账时间
- iconfont 图标宽高出问题_细节猎人04期 | PPT图标的分类和使用注意事项 上篇
- Ribbon源码解析(二)
- 发布面向Outlook(RPC)的Exchange Server
- oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段
- 程序员,35岁是职业发展的转折点 (1)
- (六)为时装设计生成训练和运行GAN
- flash代码_Flash如何处理常见的代码错误(AS3)(2)
- 数据分析中会常犯哪些错误,如何解决? 一
- Oct.14 华为数通部算法岗面经
- Java8 Stream流 - 高效快速的处理集合
- 粗糙集的概念和一些例子
- Parasol and GreenSwitch: Managing Datacenters Powered by Renewable Energy
- Python订票系统这才是看电影选座的正确方法,原来我们都上当了
- 音视频开发系列(15):视频与音频同步
- JavaScript(短信验证码)
- hive安装:3.1.2版本
热门文章
- 联想r720安装固态_分享联想R720重装Win10系统无法识别固态硬盘的解决方案
- 打新盛宴结束,HT未来之路如何?
- Andiod 是什么
- Android开发_SharePreferences
- 算法推荐规制!《互联网信息服务算法推荐管理规定(征求意见稿)》公开征求意见
- Windows/Android/iOS平台H265编码视频播放器EasyPlayerPro支持高码率视频播放和D3D画面旋转代码参考
- 迷茫吗?30岁之前你一定要做这三件事
- c语言消消看算法,论消去游戏中的数据结构与算法.doc
- Nature Microbiology | SeqCode:基于序列数据描述的原核生物命名规则
- 51单片机仿真——定时器控制单只数码管显示0—9