summaryrefslogtreecommitdiffstats
path: root/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
diff options
context:
space:
mode:
Diffstat (limited to 'config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java10
1 files changed, 6 insertions, 4 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 b4750eebfee..de44d0b86c4 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
@@ -244,11 +244,13 @@ public class ConfigSubscriber implements AutoCloseable {
* the config should be applied at this time, false otherwise
*/
private boolean acquireSnapshot(long timeoutInMillis, boolean requireChange) {
+ boolean initialConfiguration;
boolean applyOnRestartOnly;
synchronized (monitor) {
if (state == State.CLOSED) return false;
state = State.FROZEN;
applyOnRestartOnly = applyOnRestart;
+ initialConfiguration = generation == -1;
}
long started = System.currentTimeMillis();
long timeLeftMillis = timeoutInMillis;
@@ -274,14 +276,14 @@ public class ConfigSubscriber implements AutoCloseable {
if (currentGen == null) currentGen = config.getGeneration();
allGenerationsTheSame &= currentGen.equals(config.getGeneration());
allGenerationsChanged &= config.isGenerationChanged();
- anyConfigChanged |= config.isConfigChanged();
- applyOnRestartOnly |= requireChange && config.applyOnRestart(); // only if this is reconfig
+ anyConfigChanged |= config.isConfigChanged();
+ applyOnRestartOnly |= config.applyOnRestart();
timeLeftMillis = timeoutInMillis + started - System.currentTimeMillis();
}
- reconfigDue = ((anyConfigChanged && !applyOnRestartOnly) || !requireChange)
+ reconfigDue = ( initialConfiguration || (anyConfigChanged && !applyOnRestartOnly))
&& allGenerationsChanged && allGenerationsTheSame;
- if (requireChange && applyOnRestartOnly) { // if this is a reconfig, disable future reconfigs until restart
+ if (applyOnRestartOnly && ! initialConfiguration) { // disable any reconfig until restart
synchronized (monitor) {
applyOnRestart = applyOnRestartOnly;
}