diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-12-08 12:22:47 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-12-08 12:22:47 +0100 |
commit | 61a1631be626eb303bab5a5d56b3b499ba5cf2f5 (patch) | |
tree | a71290a92d1af4f9780ccad14fa33fbd3c80098b | |
parent | ddac99566ca559b720304299351ec4032e73e736 (diff) |
Use generation to determine initial configuration
4 files changed, 10 insertions, 8 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()); } /** diff --git a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java index a58aabfce17..57c5e768cfb 100644 --- a/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java +++ b/container-search-and-docproc/src/main/java/com/yahoo/container/handler/observability/ApplicationStatusHandler.java @@ -86,7 +86,7 @@ public class ApplicationStatusHandler extends AbstractRequestHandler { @Override protected com.yahoo.jdisc.Response newResponse() { com.yahoo.jdisc.Response response = new com.yahoo.jdisc.Response(com.yahoo.jdisc.Response.Status.OK); - response.headers().add("Content-Type", Arrays.asList(new String[]{"application/json"})); + response.headers().add("Content-Type", List.of("application/json")); return response; } }.connect(handler)); |