-
Couldn't load subscription status.
- Fork 131
Closed
@stonegyu
Description
hello
When using AbstractRoutingConnectionFactory, Transaction Rollback does not work.
dependencies :
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.13</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r2dbc</artifactId> <version>2.5.13</version> </dependency>
configuration information
@Slf4j @Configuration @EnableR2dbcRepositories @EnableR2dbcAuditing @EnableTransactionManagement class DataR2dbcConfig : AbstractR2dbcConfiguration() { // Omit r2dbc connection information.. @Primary @Bean("connectionFactory") override fun connectionFactory(): ConnectionFactory { val primaryConnectionFactory = primaryConnectionFactory() val secondaryConnectionFactory = secondaryConnectionFactory() val routingConnectionFactory: AbstractRoutingConnectionFactory = object : AbstractRoutingConnectionFactory() { override fun determineCurrentLookupKey(): Mono<Any> { return TransactionSynchronizationManager.forCurrentTransaction().map { if (it.isActualTransactionActive) { if (it.isCurrentTransactionReadOnly) "secondary" else "primary" } else { "secondary" } } } } val factories = mapOf("primary" to primaryConnectionFactory, "secondary" to secondaryConnectionFactory) routingConnectionFactory.setLenientFallback(true) routingConnectionFactory.setDefaultTargetConnectionFactory(secondaryConnectionFactory) routingConnectionFactory.setTargetConnectionFactories(factories) return routingConnectionFactory } @Primary @Bean("reactiveTransactionManager") fun reactiveTransactionManager(@Qualifier("connectionFactory") connectionFactory: ConnectionFactory): ReactiveTransactionManager { return R2dbcTransactionManager(TransactionAwareConnectionFactoryProxy(connectionFactory)) } }
Transaction rollback worked normally when using only the primary connection factory.
When using AbstractRoutingConnectionFactory, the transaction doesn't seem to work properly.