diff options
author | gjoranv <gv@verizonmedia.com> | 2021-10-15 11:40:09 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2021-10-15 12:27:49 +0200 |
commit | 55c541b27c1c18d019ffb2a608734d89609c9861 (patch) | |
tree | 89e17ba0d0c640b154ef1e23d6df7aeb32184863 | |
parent | 9e8e87e17a282ae396c40717b4f8caccf155c53c (diff) |
Re-introduce the resetting of component subscriber after bootstrap
- Otherwise, components from a changed bundle with unchanged configs
would get the class of the previous config generation.
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java index ff238bd2497..c90f05e2227 100644 --- a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java +++ b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java @@ -8,6 +8,7 @@ import com.yahoo.container.di.config.Subscriber; import com.yahoo.container.di.config.SubscriberFactory; import com.yahoo.vespa.config.ConfigKey; +import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Optional; @@ -52,7 +53,9 @@ public final class ConfigRetriever { while (true) { Optional<ConfigSnapshot> maybeSnapshot = getConfigsOnce(componentConfigKeys, leastGeneration, isInitializing); if (maybeSnapshot.isPresent()) { - return maybeSnapshot.get(); + var configSnapshot = maybeSnapshot.get(); + resetComponentSubscriberIfBootstrap(configSnapshot); + return configSnapshot; } } } @@ -122,6 +125,12 @@ public final class ConfigRetriever { } } + private void resetComponentSubscriberIfBootstrap(ConfigSnapshot configSnapshot) { + if (configSnapshot instanceof BootstrapConfigs) { + setupComponentSubscriber(Collections.emptySet()); + } + } + private void setupComponentSubscriber(Set<ConfigKey<? extends ConfigInstance>> keys) { if (! componentSubscriberKeys.equals(keys)) { componentSubscriber.close(); |