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 1fb1d0019..2e5878444 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();