From f308aeb7af5c4373dc45ad036ee0f86ea0fa659a Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Thu, 16 Dec 2021 15:18:44 +0200 Subject: [PATCH] Fix concurrency issue with REST Client Config Fixes: #22281 --- .../io/quarkus/restclient/config/RestClientsConfig.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/extensions/resteasy-classic/rest-client-config/runtime/src/main/java/io/quarkus/restclient/config/RestClientsConfig.java b/extensions/resteasy-classic/rest-client-config/runtime/src/main/java/io/quarkus/restclient/config/RestClientsConfig.java index c10fa4edbdd16..277d880dedb8e 100644 --- a/extensions/resteasy-classic/rest-client-config/runtime/src/main/java/io/quarkus/restclient/config/RestClientsConfig.java +++ b/extensions/resteasy-classic/rest-client-config/runtime/src/main/java/io/quarkus/restclient/config/RestClientsConfig.java @@ -1,10 +1,8 @@ package io.quarkus.restclient.config; -import java.util.HashMap; import java.util.Map; import java.util.Optional; - -import org.wildfly.common.annotation.NotNull; +import java.util.concurrent.ConcurrentHashMap; import io.quarkus.runtime.annotations.ConfigItem; import io.quarkus.runtime.annotations.ConfigPhase; @@ -29,7 +27,7 @@ public class RestClientsConfig { // The @Deprecated annotation prevents this field from being included in generated docs. We only want the `configKey` field // above to be included. @Deprecated - private final Map configs = new HashMap<>(); + private final Map configs = new ConcurrentHashMap<>(); /** * By default, REST Client Reactive uses text/plain content type for String values @@ -65,7 +63,7 @@ public RestClientConfig getClientConfig(String configKey) { return configs.computeIfAbsent(configKey, RestClientConfig::load); } - public RestClientConfig getClientConfig(@NotNull Class clientInterface) { + public RestClientConfig getClientConfig(Class clientInterface) { return configs.computeIfAbsent(clientInterface.getName(), name -> RestClientConfig.load(clientInterface)); }