diff options
author | Harald Musum <musum@yahooinc.com> | 2021-11-10 15:27:02 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2021-11-10 15:27:02 +0100 |
commit | 7b8ff1e3984f59fe90b7db8cac3c85e9c6fc34a5 (patch) | |
tree | 0f92c24f15ab0e65f5403618a59862ace41398cd /config | |
parent | c2f747cac63ae386a3c8b41674eca8c651ed0bea (diff) |
Always update config when generation has changed
Diffstat (limited to 'config')
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java | 5 | ||||
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java | 14 |
2 files changed, 18 insertions, 1 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java index 6a81c2279d1..d1eab1e1ff1 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java @@ -203,6 +203,11 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { this.config.set(new ConfigState<>(true, generation, applyOnRestart, true, config, payloadChecksums)); } + void setConfigAndGeneration(Long generation, boolean applyOnRestart, T config, PayloadChecksums payloadChecksums) { + ConfigState<T> prev = this.config.get(); + this.config.set(new ConfigState<>(true, generation, applyOnRestart, !config.equals(prev.getConfig()), config, payloadChecksums)); + } + /** * Used by {@link FileConfigSubscription} and {@link ConfigSetSubscription} */ 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 27099790f5b..c6ea79ddbcd 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 @@ -73,7 +73,7 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc if (jrtReq.hasUpdatedConfig()) { setNewConfig(jrtReq); } else { - setGeneration(jrtReq.getNewGeneration()); + setNewConfigAndGeneration(jrtReq); } } @@ -110,6 +110,18 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc } } + protected void setNewConfigAndGeneration(JRTClientConfigRequest jrtReq) { + try { + T configInstance = toConfigInstance(jrtReq); + setConfigAndGeneration(jrtReq.getNewGeneration(), + jrtReq.responseIsApplyOnRestart(), + configInstance, + jrtReq.getNewChecksums()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("Bad config in response", e); + } + } + /** * This method should ideally throw new MissingConfig/Configuration exceptions and let the caller * catch them. However, this would make the code in JRT/File/RawSource uglier. |