From b1653708e4a821aa5abc80f11f0c4625b41a145d Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 24 Oct 2024 09:43:30 +0100 Subject: [PATCH] Improve thread-safety of OnClassCondition Closes gh-41709 --- .../boot/autoconfigure/condition/OnClassCondition.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java index d6c596e6841..5465ed2d6c3 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java @@ -165,10 +165,12 @@ class OnClassCondition extends FilteringSpringBootCondition { catch (InterruptedException ex) { Thread.currentThread().interrupt(); } - if (this.failure != null) { - ReflectionUtils.rethrowRuntimeException(this.failure); + Throwable failure = this.failure; + if (failure != null) { + ReflectionUtils.rethrowRuntimeException(failure); } - return this.outcomes; + ConditionOutcome[] outcomes = this.outcomes; + return (outcomes != null) ? outcomes : new ConditionOutcome[0]; } }