diff options
Diffstat (limited to 'config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java')
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java index 07132c460f9..01008f0a8a2 100644 --- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java +++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java @@ -5,15 +5,13 @@ import com.yahoo.config.ConfigInstance; import com.yahoo.config.ConfigurationRuntimeException; import com.yahoo.config.subscription.impl.ConfigSubscription; import com.yahoo.config.subscription.impl.JRTConfigRequester; +import com.yahoo.config.subscription.impl.JrtConfigRequesters; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.TimingValues; import com.yahoo.yolean.Exceptions; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; - import java.util.logging.Level; import java.util.logging.Logger; @@ -40,6 +38,7 @@ public class ConfigSubscriber implements AutoCloseable { private final ConfigSource source; private final Object monitor = new Object(); private final Throwable stackTraceAtConstruction; // TODO Remove once finalizer is gone + private final JrtConfigRequesters requesters = new JrtConfigRequesters(); /** The last complete config generation received by this */ private long generation = -1; @@ -52,11 +51,6 @@ public class ConfigSubscriber implements AutoCloseable { private boolean applyOnRestart = false; /** - * Reuse requesters for equal source sets, limit number if many subscriptions. - */ - protected Map<ConfigSourceSet, JRTConfigRequester> requesters = new HashMap<>(); - - /** * The states of the subscriber. Affects the validity of calling certain methods. * */ @@ -114,8 +108,8 @@ public class ConfigSubscriber implements AutoCloseable { // for testing <T extends ConfigInstance> ConfigHandle<T> subscribe(Class<T> configClass, String configId, ConfigSource source, TimingValues timingValues) { checkStateBeforeSubscribe(); - final ConfigKey<T> configKey = new ConfigKey<>(configClass, configId); - ConfigSubscription<T> sub = ConfigSubscription.get(configKey, this, source, timingValues); + ConfigKey<T> configKey = new ConfigKey<>(configClass, configId); + ConfigSubscription<T> sub = ConfigSubscription.get(configKey, requesters, source, timingValues); ConfigHandle<T> handle = new ConfigHandle<>(sub); subscribeAndHandleErrors(sub, configKey, handle, timingValues); return handle; @@ -375,19 +369,10 @@ public class ConfigSubscriber implements AutoCloseable { for (ConfigHandle<? extends ConfigInstance> h : subscriptionHandles) { h.subscription().close(); } - closeRequesters(); + requesters.close(); log.log(FINE, () -> "Config subscriber has been closed."); } - /** - * Closes all open requesters - */ - protected void closeRequesters() { - for (JRTConfigRequester requester : requesters.values()) { - requester.close(); - } - } - @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -442,14 +427,6 @@ public class ConfigSubscriber implements AutoCloseable { return source; } - /** - * Implementation detail, do not use. - * @return requesters - */ - public Map<ConfigSourceSet, JRTConfigRequester> requesters() { - return requesters; - } - public boolean isClosed() { synchronized (monitor) { return state == State.CLOSED; |