diff options
Diffstat (limited to 'config/src')
3 files changed, 9 insertions, 7 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; } 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 07bbd950c83..b58817305e9 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 @@ -25,7 +25,7 @@ import com.yahoo.vespa.config.protocol.DefContent; */ public abstract class ConfigSubscription<T extends ConfigInstance> { - protected static Logger log = Logger.getLogger(ConfigSubscription.class.getName()); + protected static final Logger log = Logger.getLogger(ConfigSubscription.class.getName()); protected final ConfigSubscriber subscriber; private final AtomicReference<ConfigState<T>> config = new AtomicReference<>(); protected final ConfigKey<T> key; diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java index c0080091db6..af2df2bcae7 100755 --- a/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java +++ b/config/src/test/java/com/yahoo/config/subscription/ConfigApiTest.java @@ -26,10 +26,10 @@ public class ConfigApiTest { subscriber.nextConfig(); assertNotNull(h.getConfig()); assertEquals(AppConfig.CONFIG_DEF_NAME, ConfigInstance.getDefName(h.getConfig().getClass())); - assertThat(h.isChanged(), is(true)); + assertTrue(h.isChanged()); assertTrue(h.toString().startsWith("Handle changed: true\nSub:\n")); subscriber.close(); - assertThat(subscriber.state(), is(ConfigSubscriber.State.CLOSED)); + assertEquals(ConfigSubscriber.State.CLOSED, subscriber.state()); } /** |