diff options
Diffstat (limited to 'config/src/main/java/com')
3 files changed, 49 insertions, 29 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 5c0b932dcce..be039c335d8 100644 --- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java +++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java @@ -10,7 +10,6 @@ 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; @@ -19,8 +18,8 @@ import java.util.logging.Logger; import static java.util.stream.Collectors.toList; /** - * Used for subscribing to one or more configs. Can optionally be given a {@link ConfigSource} for the configs - * that will be used when {@link #subscribe(Class, String)} is called. + * Used for subscribing to one or more configs using the default config source. Can optionally be given a + * {@link ConfigSource} for the configs that will be used when {@link #subscribe(Class, String)} is called. * * {@link #subscribe(Class, String)} on the configs needed, call {@link #nextConfig(long)} and get the config from the * {@link ConfigHandle} which {@link #subscribe(Class, String)} returned. @@ -43,9 +42,15 @@ public class ConfigSubscriber implements AutoCloseable { private boolean internalRedeploy = false; /** - * Reuse requesters for equal source sets, limit number if many subscriptions. + * Reuse requester, limit number if many subscriptions. + * + * @deprecated use {@link #requester} */ - protected Map<ConfigSourceSet, JRTConfigRequester> requesters = new HashMap<>(); + @Deprecated + // TODO: Remove in Vespa 8 + protected Map<ConfigSourceSet, JRTConfigRequester> requesters = Map.of(); + + protected JRTConfigRequester requester = null; /** * The states of the subscriber. Affects the validity of calling certain methods. @@ -324,17 +329,28 @@ public class ConfigSubscriber implements AutoCloseable { for (ConfigHandle<? extends ConfigInstance> h : subscriptionHandles) { h.subscription().close(); } - closeRequesters(); + closeRequester(); log.log(LogLevel.DEBUG, "Config subscriber has been closed."); } + /** - * Closes all open requesters + * Closes requester + * @deprecated use {@link #closeRequester()} instead + * */ + @Deprecated + // TODO: Remove in Vespa 8 protected void closeRequesters() { - for (JRTConfigRequester requester : requesters.values()) { + closeRequester(); + } + + /** + * Closes requester + */ + protected void closeRequester() { + if (requester != null) requester.close(); - } } @Override @@ -394,9 +410,24 @@ public class ConfigSubscriber implements AutoCloseable { /** * Implementation detail, do not use. * @return requesters + * @deprecated use {@link #requester()} */ + @Deprecated + // TODO: Remove in Vespa 8 public Map<ConfigSourceSet, JRTConfigRequester> requesters() { - return requesters; + return Map.of((ConfigSourceSet)source, requester); + } + + /** + * Implementation detail, do not use. + * @return requesters + */ + public JRTConfigRequester requester() { + return requester; + } + + public void requester(JRTConfigRequester requester) { + this.requester = requester; } public boolean isClosed() { diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java index 324546230d9..328a4d5a0fd 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/GenericConfigSubscriber.java @@ -2,34 +2,29 @@ package com.yahoo.config.subscription.impl; import java.util.List; -import java.util.Map; import com.yahoo.config.ConfigInstance; import com.yahoo.config.subscription.ConfigHandle; import com.yahoo.config.subscription.ConfigSource; -import com.yahoo.config.subscription.ConfigSourceSet; import com.yahoo.config.subscription.ConfigSubscriber; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.RawConfig; import com.yahoo.vespa.config.TimingValues; /** - * A subscriber that can subscribe without the class. Used by configproxy. + * A subscriber that can subscribe without supplying a config class. Used by config proxy. * * @author Vegard Havdal */ public class GenericConfigSubscriber extends ConfigSubscriber { /** - * Constructs a new subscriber using the given pool of requesters (JRTConfigRequester holds 1 connection which in - * turn is subject to failover across the elems in the source set.) - * The behaviour is undefined if the map key is different from the source set the requester was built with. - * See also {@link JRTConfigRequester#get(com.yahoo.vespa.config.ConnectionPool, com.yahoo.vespa.config.TimingValues)} + * Constructs a new subscriber using the given requester * - * @param requesters a map from config source set to config requester + * @param requester a config requester */ - public GenericConfigSubscriber(Map<ConfigSourceSet, JRTConfigRequester> requesters) { - this.requesters = requesters; + public GenericConfigSubscriber(JRTConfigRequester requester) { + this.requester = requester; } public GenericConfigSubscriber() { @@ -37,7 +32,7 @@ public class GenericConfigSubscriber extends ConfigSubscriber { } /** - * Subscribes to config without using the class. For internal use in config proxy. + * Subscribes to config without using a config class. For internal use in config proxy. * * @param key the {@link ConfigKey to subscribe to} * @param defContent the config definition content for the config to subscribe to @@ -68,10 +63,4 @@ public class GenericConfigSubscriber extends ConfigSubscriber { throw new UnsupportedOperationException(); } - /** - * Do nothing, since we share requesters - */ - public void closeRequesters() { - } - } diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java index 39e6c69f539..58a6c5f9f0c 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java @@ -154,10 +154,10 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc } private JRTConfigRequester getRequester() { - JRTConfigRequester requester = subscriber.requesters().get(sources); + JRTConfigRequester requester = subscriber.requester(); if (requester == null) { requester = new JRTConfigRequester(new JRTConnectionPool(sources), timingValues); - subscriber.requesters().put(sources, requester); + subscriber.requester(requester); } return requester; } |