Skip to content

Commit 8eecfa1

Browse files
committed
Enforce ordering of TaskExecutorCustomizer
Enforce ordering of customizer in "TaskExecutionAutoConfiguration". Also, add comments on non ordered usage of ObjectProvider.
1 parent 42e0dc1 commit 8eecfa1

File tree

4 files changed

+7
-1
lines changed

4 files changed

+7
-1
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ static class DataSourcePoolMetadataMetricsConfiguration {
6868
@Autowired
6969
void bindDataSourcesToRegistry(Map<String, DataSource> dataSources, MeterRegistry registry,
7070
ObjectProvider<DataSourcePoolMetadataProvider> metadataProviders) {
71+
// doesn't matter the ordering here since they are usually distinct and are
72+
// used as first match wins basis.
7173
List<DataSourcePoolMetadataProvider> metadataProvidersList = metadataProviders.stream()
7274
.collect(Collectors.toList());
7375
dataSources.forEach(

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public SpringApplicationAdminMXBeanRegistrar springApplicationAdminRegistrar(
6262
ObjectProvider<MBeanExporter> mbeanExporters, Environment environment) throws MalformedObjectNameException {
6363
String jmxName = environment.getProperty(JMX_NAME_PROPERTY, DEFAULT_JMX_NAME);
6464
if (mbeanExporters != null) { // Make sure to not register that MBean twice
65+
// ordering is not important for exporters, thus just iterate them
6566
for (MBeanExporter mbeanExporter : mbeanExporters) {
6667
mbeanExporter.addExcludedBean(jmxName);
6768
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ public Flyway flyway(FlywayProperties properties, DataSourceProperties dataSourc
123123
configureCallbacks(configuration, orderedCallbacks);
124124
fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
125125
configureFlywayCallbacks(configuration, orderedCallbacks);
126+
// flyway orders migrations by itself with their versions; thus use normal
127+
// stream to collect them
126128
List<JavaMigration> migrations = javaMigrations.stream().collect(Collectors.toList());
127129
configureJavaMigrations(configuration, migrations);
128130
return configuration.load();

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/task/TaskExecutionAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.autoconfigure.task;
1818

1919
import java.util.concurrent.Executor;
20+
import java.util.stream.Collectors;
2021

2122
import org.springframework.beans.factory.ObjectProvider;
2223
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -67,7 +68,7 @@ public TaskExecutorBuilder taskExecutorBuilder(TaskExecutionProperties propertie
6768
builder = builder.awaitTermination(shutdown.isAwaitTermination());
6869
builder = builder.awaitTerminationPeriod(shutdown.getAwaitTerminationPeriod());
6970
builder = builder.threadNamePrefix(properties.getThreadNamePrefix());
70-
builder = builder.customizers(taskExecutorCustomizers);
71+
builder = builder.customizers(taskExecutorCustomizers.orderedStream().collect(Collectors.toList()));
7172
builder = builder.taskDecorator(taskDecorator.getIfUnique());
7273
return builder;
7374
}

0 commit comments

Comments
 (0)