Skip to content

Commit 685a611

Browse files
ttddyywilkinsona
authored andcommitted
Use milliseconds when configuring awaitTerminationPeriod
Prior to this change, TaskExecutorBuilder used seconds as its precision to map the awaitTerminationPeriod value. This caused a loss of millisecond information in the period. This commit fixes the loss by converting the period to millisecond and using setAwaitTerminationMillis to configure the executor. See gh-22604
1 parent d9b61c4 commit 685a611

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public <T extends ThreadPoolTaskExecutor> T configure(T taskExecutor) {
308308
map.from(this.keepAlive).asInt(Duration::getSeconds).to(taskExecutor::setKeepAliveSeconds);
309309
map.from(this.allowCoreThreadTimeOut).to(taskExecutor::setAllowCoreThreadTimeOut);
310310
map.from(this.awaitTermination).to(taskExecutor::setWaitForTasksToCompleteOnShutdown);
311-
map.from(this.awaitTerminationPeriod).asInt(Duration::getSeconds).to(taskExecutor::setAwaitTerminationSeconds);
311+
map.from(this.awaitTerminationPeriod).as(Duration::toMillis).to(taskExecutor::setAwaitTerminationMillis);
312312
map.from(this.threadNamePrefix).whenHasText().to(taskExecutor::setThreadNamePrefix);
313313
map.from(this.taskDecorator).to(taskExecutor::setTaskDecorator);
314314
if (!CollectionUtils.isEmpty(this.customizers)) {

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/task/TaskExecutorBuilderTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ void awaitTerminationPeriodShouldApply() {
6565
Duration period = Duration.ofMinutes(1);
6666
ThreadPoolTaskExecutor executor = this.builder.awaitTerminationPeriod(period).build();
6767
assertThat(executor).hasFieldOrPropertyWithValue("awaitTerminationMillis", period.toMillis());
68+
69+
period = Duration.ofMillis(50);
70+
executor = this.builder.awaitTerminationPeriod(period).build();
71+
assertThat(executor).hasFieldOrPropertyWithValue("awaitTerminationMillis", period.toMillis());
6872
}
6973

7074
@Test

0 commit comments

Comments
 (0)