From 44c3fe3ce6f74f38d30a4f26892b62d370b0aa9f Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 25 Jan 2021 16:01:37 +0100 Subject: [PATCH] GH-2081 Add synchronization on channel resolution method in StreamBridge This should mitigate race condition when StreamBridge is used in an async way Resolves #2081 --- .../springframework/cloud/stream/function/StreamBridge.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/StreamBridge.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/StreamBridge.java index cc221403e..b983b8ace 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/StreamBridge.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/StreamBridge.java @@ -181,8 +181,8 @@ public final class StreamBridge implements SmartInitializingSingleton { this.initialized = true; } - @SuppressWarnings({ "unchecked", "deprecation" }) - SubscribableChannel resolveDestination(String destinationName, ProducerProperties producerProperties) { + @SuppressWarnings("unchecked") + synchronized SubscribableChannel resolveDestination(String destinationName, ProducerProperties producerProperties) { SubscribableChannel messageChannel = this.channelCache.get(destinationName); if (messageChannel == null && this.applicationContext.containsBean(destinationName)) { messageChannel = this.applicationContext.getBean(destinationName, SubscribableChannel.class);