From c35c6f2a2e39f6a0330047e1d8eac6b3cd6bc8ea Mon Sep 17 00:00:00 2001 From: zhang-wei Date: Mon, 11 Nov 2019 22:26:21 +0800 Subject: [PATCH] fix consul repeated invoker KVCache.newCache (#3833) --- .../consul/ConsulConfigurationWatcherRegister.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oap-server/server-configuration/configuration-consul/src/main/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegister.java b/oap-server/server-configuration/configuration-consul/src/main/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegister.java index 1fb1d0019a..2e5878444a 100644 --- a/oap-server/server-configuration/configuration-consul/src/main/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegister.java +++ b/oap-server/server-configuration/configuration-consul/src/main/java/org/apache/skywalking/oap/server/configuration/consul/ConsulConfigurationWatcherRegister.java @@ -93,7 +93,10 @@ public class ConsulConfigurationWatcherRegister extends ConfigWatcherRegister { } private void registerKeyListeners(final Set keys) { - keys.forEach(key -> { + final Set unregisterKeys = new HashSet<>(keys); + unregisterKeys.removeAll(cachesByKey.keySet()); + + unregisterKeys.forEach(key -> { KVCache cache = KVCache.newCache(consul, key); cache.addListener(newValues -> { Optional value = newValues.values().stream().filter(it -> key.equals(it.getKey())).findAny(); -- GitLab