seata datasource加载顺序问题导致AT模式下记录undolog日志失效

ulmd4ohb  于 2022-10-21  发布在  其他
关注(0)|答案(6)|浏览(407)
  • 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的代理

qmb5sa22

qmb5sa221#

升级springboot版本和hikaricp的版本,不行的话就改用druid

rwqw0loc

rwqw0loc2#

升级springboot版本和hikaricp的版本,不行的话就改用druid

在启动类加上@EnableAutoDataSourceProxy或者代码声明一下datasouce就行了,做demo遇到顺便记录一下方便别人排查问题。

kyxcudwk

kyxcudwk3#

升级springboot版本和hikaricp的版本,不行的话就改用druid

在启动类加上@EnableAutoDataSourceProxy或者代码声明一下datasouce就行了,做demo遇到顺便记录一下方便别人排查问题。

seata-spring-boot-starter默认自动代理的,不需要加@EnableAutoDataSourceProxy,自己声明的datasource和spring autoconfiguration的顺序不同,所以会被seata代理成功,druid也可以,最终问题是hikaricp的datasource是延迟加载的,且可能加载顺序跟seata的自动代理顺序不同,目前在2.1.8的springboot上经过测试是无此问题

krcsximq

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引起的

m3eecexj

m3eecexj5#

或许我们可以加一个AutoConfigureBefore(DataSourceConfiguration.class) 在 SeataDataSourceAutoConfiguration上 来试试

nbysray5

nbysray56#

或许我们可以加一个AutoConfigureBefore(DataSourceConfiguration.class) 在 SeataDataSourceAutoConfiguration上 来试试

这种加载相关的问题我比较关注,我来跟一下。 plz assgin to me

相关问题