Skip to content

Commit fdd16c4

Browse files
onobccppwfs
authored andcommitted
Remove extra Spring Cloud Task transaction manager
Prior to this commit there were 2 transaction managers defined. One for Dataflow and one for Spring Cloud Task. The former was marked @primary and it was causing confusion. This commit removes the task specific one and uses the same manager for both cases. This is possible by setting the 'spring.cloud.task.transaction-manager' property. Move the Spring Cloud Task txn mgr property This commit moves the SCT 'transaction-manager' property to the dataflow-server-defaults.yml default properties file. Add TransactionManagerCustomizationAutoConfiguration to DataFlowServerConfigurationTests contextRunner
1 parent f59a308 commit fdd16c4

File tree

7 files changed

+18
-35
lines changed

7 files changed

+18
-35
lines changed

spring-cloud-dataflow-server-core/src/main/java/org/springframework/cloud/dataflow/server/config/DataFlowServerConfiguration.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818

1919
import jakarta.persistence.EntityManager;
2020
import jakarta.servlet.Filter;
21-
import javax.sql.DataSource;
2221

23-
import org.springframework.beans.factory.ObjectProvider;
2422
import org.springframework.boot.autoconfigure.batch.BatchProperties;
2523
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
2624
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -40,7 +38,6 @@
4038
import org.springframework.context.annotation.ComponentScan;
4139
import org.springframework.context.annotation.Configuration;
4240
import org.springframework.context.annotation.Import;
43-
import org.springframework.context.annotation.Primary;
4441
import org.springframework.data.web.config.EnableSpringDataWebSupport;
4542
import org.springframework.orm.jpa.JpaTransactionManager;
4643
import org.springframework.transaction.PlatformTransactionManager;
@@ -88,11 +85,9 @@ public Filter forwardedHeaderFilter() {
8885
}
8986

9087
@Bean
91-
@Primary
92-
public PlatformTransactionManager transactionManager(
93-
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
88+
PlatformTransactionManager transactionManager(TransactionManagerCustomizers transactionManagerCustomizers) {
9489
JpaTransactionManager transactionManager = new JpaTransactionManager();
95-
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager));
90+
transactionManagerCustomizers.customize(transactionManager);
9691
return transactionManager;
9792
}
9893

spring-cloud-dataflow-server-core/src/main/resources/META-INF/dataflow-server-defaults.yml

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ spring:
9090
task:
9191
initialize:
9292
enable: false
93+
transaction-manager: transactionManager
9394
dataflow:
9495
rdbms:
9596
initialize:

spring-cloud-dataflow-server-core/src/test/java/org/springframework/cloud/dataflow/server/config/DataFlowServerConfigurationTests.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
3333
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
3434
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
35+
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration;
3536
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
3637
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3738
import org.springframework.cloud.common.security.core.support.OAuth2TokenUtilsService;
@@ -74,6 +75,7 @@ public class DataFlowServerConfigurationTests {
7475
.withAllowBeanDefinitionOverriding(true)
7576
.withUserConfiguration(
7677
DataFlowServerConfigurationTests.TestConfiguration.class,
78+
TransactionManagerCustomizationAutoConfiguration.class,
7779
SecurityAutoConfiguration.class,
7880
DataFlowServerAutoConfiguration.class,
7981
DataFlowControllerAutoConfiguration.class,

spring-cloud-dataflow-server-core/src/test/java/org/springframework/cloud/dataflow/server/configuration/TaskServiceDependencies.java

+4-12
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;
2727
import org.springframework.batch.core.repository.JobRepository;
2828
import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
29-
import org.springframework.beans.factory.ObjectProvider;
3029
import org.springframework.beans.factory.annotation.Autowired;
3130
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
3231
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -35,6 +34,7 @@
3534
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
3635
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
3736
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
37+
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration;
3838
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
3939
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
4040
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -97,7 +97,6 @@
9797
import org.springframework.context.annotation.Conditional;
9898
import org.springframework.context.annotation.Configuration;
9999
import org.springframework.context.annotation.Import;
100-
import org.springframework.context.annotation.Primary;
101100
import org.springframework.core.env.PropertyResolver;
102101
import org.springframework.core.io.Resource;
103102
import org.springframework.core.io.ResourceLoader;
@@ -106,7 +105,6 @@
106105
import org.springframework.data.map.repository.config.EnableMapRepositories;
107106
import org.springframework.data.web.config.EnableSpringDataWebSupport;
108107
import org.springframework.hateoas.config.EnableHypermediaSupport;
109-
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
110108
import org.springframework.orm.jpa.JpaTransactionManager;
111109
import org.springframework.transaction.PlatformTransactionManager;
112110
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -134,6 +132,7 @@
134132
AggregateDataFlowTaskConfiguration.class
135133
})
136134
@ImportAutoConfiguration({
135+
TransactionManagerCustomizationAutoConfiguration.class,
137136
HibernateJpaAutoConfiguration.class,
138137
JacksonAutoConfiguration.class,
139138
FlywayAutoConfiguration.class,
@@ -190,16 +189,9 @@ public TaskValidationService taskValidationService(AppRegistryService appRegistr
190189
}
191190

192191
@Bean
193-
PlatformTransactionManager springCloudTaskTransactionManager(DataSource dataSource) {
194-
return new DataSourceTransactionManager(dataSource);
195-
}
196-
197-
@Bean
198-
@Primary
199-
public PlatformTransactionManager transactionManager(
200-
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
192+
PlatformTransactionManager transactionManager(TransactionManagerCustomizers transactionManagerCustomizers) {
201193
JpaTransactionManager transactionManager = new JpaTransactionManager();
202-
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager));
194+
transactionManagerCustomizers.customize(transactionManager);
203195
return transactionManager;
204196
}
205197

spring-cloud-dataflow-server-core/src/test/java/org/springframework/cloud/dataflow/server/configuration/TestDependencies.java

+4-13
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
4747
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
4848
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
49+
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizationAutoConfiguration;
4950
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
5051
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
5152
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -54,7 +55,6 @@
5455
import org.springframework.cloud.dataflow.aggregate.task.AggregateTaskConfiguration;
5556
import org.springframework.cloud.dataflow.aggregate.task.AggregateTaskExplorer;
5657
import org.springframework.cloud.dataflow.aggregate.task.DataflowTaskExecutionQueryDao;
57-
import org.springframework.cloud.dataflow.aggregate.task.TaskDefinitionReader;
5858
import org.springframework.cloud.dataflow.aggregate.task.impl.AggregateDataFlowTaskExecutionQueryDao;
5959
import org.springframework.cloud.dataflow.audit.repository.AuditRecordRepository;
6060
import org.springframework.cloud.dataflow.audit.service.AuditRecordService;
@@ -172,7 +172,6 @@
172172
import org.springframework.context.annotation.Bean;
173173
import org.springframework.context.annotation.Configuration;
174174
import org.springframework.context.annotation.Import;
175-
import org.springframework.context.annotation.Primary;
176175
import org.springframework.core.env.PropertyResolver;
177176
import org.springframework.core.io.FileSystemResourceLoader;
178177
import org.springframework.core.io.ResourceLoader;
@@ -182,7 +181,6 @@
182181
import org.springframework.data.web.config.EnableSpringDataWebSupport;
183182
import org.springframework.format.FormatterRegistry;
184183
import org.springframework.hateoas.server.EntityLinks;
185-
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
186184
import org.springframework.orm.jpa.JpaTransactionManager;
187185
import org.springframework.transaction.PlatformTransactionManager;
188186
import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -215,6 +213,7 @@
215213
TaskConfiguration.TaskJobServiceConfig.class
216214
})
217215
@ImportAutoConfiguration({
216+
TransactionManagerCustomizationAutoConfiguration.class,
218217
HibernateJpaAutoConfiguration.class,
219218
JacksonAutoConfiguration.class,
220219
FlywayAutoConfiguration.class,
@@ -882,17 +881,9 @@ public OAuth2TokenUtilsService oauth2TokenUtilsService() {
882881
}
883882

884883
@Bean
885-
PlatformTransactionManager springCloudTaskTransactionManager(DataSource dataSource) {
886-
return new DataSourceTransactionManager(dataSource);
887-
}
888-
889-
@Bean
890-
@Primary
891-
public PlatformTransactionManager transactionManager(
892-
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers
893-
) {
884+
PlatformTransactionManager transactionManager(TransactionManagerCustomizers transactionManagerCustomizers) {
894885
JpaTransactionManager transactionManager = new JpaTransactionManager();
895-
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager));
886+
transactionManagerCustomizers.customize(transactionManager);
896887
return transactionManager;
897888
}
898889

Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
management:
22
context-path: /foo
3+
4+
spring:
5+
cloud:
6+
task:
7+
transaction-manager: transactionManager

spring-cloud-dataflow-server/src/main/resources/application.yml

-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,3 @@ spring:
77
jpa:
88
hibernate:
99
ddl-auto: none
10-
cloud:
11-
task:
12-
transaction-manager: transactionManager

0 commit comments

Comments
 (0)