diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-02-16 13:10:15 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-02-16 13:10:15 +0100 |
commit | 7a2d217d927712190fc2be1cdb42c7d6d6758791 (patch) | |
tree | 227cdde0a235bf2fddbfdeed5d8e4656d671e680 /config | |
parent | 00e18dfc7d727e322004cc6030cbe04d8d1995bd (diff) |
Do not inc gen on forced reload.
Diffstat (limited to 'config')
3 files changed, 10 insertions, 12 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 446630d41c3..02c455bf1c3 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 @@ -46,16 +46,10 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { this.generation = generation; } private ConfigState(Long generation, T config) { - configChanged = false; - generationChanged = false; - this.generation = generation; - this.config = config; + this(false, generation,false, config); } private ConfigState() { - generation = 0L; - config = null; - configChanged = false; - generationChanged = false; + this(false, 0L, false, null); } private ConfigState<T> createUnchanged() { return new ConfigState<T>(generation, config); } public boolean isConfigChanged() { return configChanged; } @@ -189,6 +183,11 @@ public abstract class ConfigSubscription<T extends ConfigInstance> { this.config.set(new ConfigState<>(true, prev.getGeneration() + 1, !config.equals(prev.getConfig()), config)); } + protected void setConfigIfChanged(T config) { + ConfigState<T> prev = this.config.get(); + this.config.set(new ConfigState<>(true, prev.getGeneration(), + !config.equals(prev.getConfig()), config)); + } void setGeneration(Long generation) { ConfigState<T> c = config.get(); diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java index 43c5e9a87f8..8c3f87d0702 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java @@ -40,8 +40,7 @@ public class FileConfigSubscription<T extends ConfigInstance> extends ConfigSubs if (checkReloaded()) { log.log(LogLevel.DEBUG, "User forced config reload at " + System.currentTimeMillis()); // User forced reload - T newConfig = updateConfig(); - setConfigIfChangedIncGen(updateConfig()); + setConfigIfChanged(updateConfig()); ConfigState<T> configState = getConfigState(); log.log(LogLevel.DEBUG, "Config updated at " + System.currentTimeMillis() + ", changed: " + configState.isConfigChanged()); log.log(LogLevel.DEBUG, "Config: " + configState.getConfig().toString()); diff --git a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java index 561bdb1f4d4..8fdd9d5e3b3 100644 --- a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java +++ b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java @@ -79,7 +79,7 @@ public class FileConfigSubscriptionTest { assertSame(configState, sub.getConfigState()); assertTrue(configState.isConfigChanged()); assertTrue(configState.isGenerationChanged()); - assertTrue(sub.isConfigChangedAndReset(2L)); + assertTrue(sub.isConfigChangedAndReset(1L)); assertNotSame(configState, sub.getConfigState()); configState = sub.getConfigState(); assertFalse(configState.isConfigChanged()); @@ -92,7 +92,7 @@ public class FileConfigSubscriptionTest { assertFalse(configState.isConfigChanged()); assertTrue(configState.isGenerationChanged()); - assertFalse(sub.isConfigChangedAndReset(3L)); + assertFalse(sub.isConfigChangedAndReset(2L)); assertNotSame(configState, sub.getConfigState()); configState = sub.getConfigState(); assertFalse(configState.isConfigChanged()); |