summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2021-10-15 11:40:09 +0200
committergjoranv <gv@verizonmedia.com>2021-10-15 12:27:49 +0200
commit55c541b27c1c18d019ffb2a608734d89609c9861 (patch)
tree89e17ba0d0c640b154ef1e23d6df7aeb32184863
parent9e8e87e17a282ae396c40717b4f8caccf155c53c (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.java11
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();