- I have searched the issues of this repository and believe that this is not a duplicate.
Ⅰ. Issue Description
spring-boot-autoconfigure-2.3.2.RELEASE.jar
io.seata.spring.boot.autoconfigure.SeataDataSourceAutoConfiguration
seata-spring-boot-starter-1.5.2.jar
org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration
加载顺序问题导致AT模式下记录undolog日志失效
SeataDataSourceAutoConfiguration依赖datasource先完成加载,但是默认情况下会先加载seata配置再加载spring boot的配置,导致跳过了seata对于datasource的代理
6条答案
按热度按时间qmb5sa221#
升级springboot版本和hikaricp的版本,不行的话就改用druid
rwqw0loc2#
升级springboot版本和hikaricp的版本,不行的话就改用druid
在启动类加上@EnableAutoDataSourceProxy或者代码声明一下datasouce就行了,做demo遇到顺便记录一下方便别人排查问题。
kyxcudwk3#
升级springboot版本和hikaricp的版本,不行的话就改用druid
在启动类加上@EnableAutoDataSourceProxy或者代码声明一下datasouce就行了,做demo遇到顺便记录一下方便别人排查问题。
seata-spring-boot-starter默认自动代理的,不需要加@EnableAutoDataSourceProxy,自己声明的datasource和spring autoconfiguration的顺序不同,所以会被seata代理成功,druid也可以,最终问题是hikaricp的datasource是延迟加载的,且可能加载顺序跟seata的自动代理顺序不同,目前在2.1.8的springboot上经过测试是无此问题
krcsximq4#
升级springboot版本和hikaricp的版本,不行的话就改用druid
在启动类加上@EnableAutoDataSourceProxy或者代码声明一下datasouce就行了,做demo遇到顺便记录一下方便别人排查问题。
seata-spring-boot-starter默认自动代理的,不需要加@EnableAutoDataSourceProxy,自己声明的datasource和spring autoconfiguration的顺序不同,所以会被seata代理成功,druid也可以,最终问题是hikaricp的datasource是延迟加载的,且可能加载顺序跟seata的自动代理顺序不同,目前在2.1.8的springboot上经过测试是无此问题
是的,本来我也按文档没加@EnableAutoDataSourceProxy。但是我2.3.2的spring boot会有这个问题,不知道是不是其他starter引起的
m3eecexj5#
或许我们可以加一个AutoConfigureBefore(DataSourceConfiguration.class) 在 SeataDataSourceAutoConfiguration上 来试试
nbysray56#
或许我们可以加一个AutoConfigureBefore(DataSourceConfiguration.class) 在 SeataDataSourceAutoConfiguration上 来试试
这种加载相关的问题我比较关注,我来跟一下。 plz assgin to me