From e975ee8e1683554afaf4363d20ae659780d8aedd Mon Sep 17 00:00:00 2001 From: Zhenxiao Luo Date: Sat, 1 Feb 2020 22:14:38 -0800 Subject: [PATCH] Not use ConcurrentHashMap in CoordinatorRuleManager.rules --- .../server/router/CoordinatorRuleManager.java | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/server/src/main/java/org/apache/druid/server/router/CoordinatorRuleManager.java b/server/src/main/java/org/apache/druid/server/router/CoordinatorRuleManager.java index 473b5c9ca9a1..d18a6d65afab 100644 --- a/server/src/main/java/org/apache/druid/server/router/CoordinatorRuleManager.java +++ b/server/src/main/java/org/apache/druid/server/router/CoordinatorRuleManager.java @@ -41,10 +41,9 @@ import org.joda.time.Duration; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicReference; @@ -58,7 +57,7 @@ public class CoordinatorRuleManager private final ObjectMapper jsonMapper; private final Supplier config; - private final AtomicReference>> rules; + private final AtomicReference>> rules; private final DruidLeaderClient druidLeaderClient; @@ -80,7 +79,7 @@ public CoordinatorRuleManager( this.druidLeaderClient = druidLeaderClient; this.rules = new AtomicReference<>( - new ConcurrentHashMap>() + Collections.emptyMap() ); } @@ -120,7 +119,7 @@ public void stop() return; } - rules.set(new ConcurrentHashMap>()); + rules.set(Collections.emptyMap()); started = false; exec.shutdownNow(); @@ -149,17 +148,13 @@ public void poll() ); } - ConcurrentHashMap> newRules = new ConcurrentHashMap<>( - (Map>) jsonMapper.readValue( + rules.set( + Collections.unmodifiableMap(jsonMapper.readValue( response.getContent(), new TypeReference>>() { } - ) + )) ); - - log.debug("Got [%,d] rules", newRules.size()); - - rules.set(newRules); } catch (Exception e) { log.error(e, "Exception while polling for rules"); @@ -169,7 +164,7 @@ public void poll() public List getRulesWithDefault(final String dataSource) { List rulesWithDefault = new ArrayList<>(); - ConcurrentMap> theRules = rules.get(); + Map> theRules = rules.get(); List dataSourceRules = theRules.get(dataSource); if (dataSourceRules != null) { rulesWithDefault.addAll(dataSourceRules);