diff options
author | Harald Musum <musum@yahooinc.com> | 2022-04-19 15:05:18 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-04-19 15:05:18 +0200 |
commit | 10cb083b4c6d70a8c2ce566bfcf74b3e3903781c (patch) | |
tree | 7cbb5899ab879a3a36866145eb5be02d97f10187 /config | |
parent | d5b2d4c6b4a929c7e69d76b1521178caa83dffe3 (diff) |
Make sure we only add config with updated generation to subscription queue
Diffstat (limited to 'config')
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java | 15 | ||||
-rw-r--r-- | config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java | 12 |
2 files changed, 14 insertions, 13 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java index e86948fb3ae..d77cfc17c92 100644 --- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java +++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java @@ -6,6 +6,7 @@ import com.yahoo.config.ConfigurationRuntimeException; import com.yahoo.config.subscription.ConfigSourceSet; import com.yahoo.jrt.Request; import com.yahoo.jrt.RequestWaiter; +import com.yahoo.text.internal.SnippetGenerator; import com.yahoo.vespa.config.Connection; import com.yahoo.vespa.config.ConnectionPool; import com.yahoo.vespa.config.ErrorCode; @@ -19,6 +20,7 @@ import java.time.Duration; import java.time.Instant; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.logging.Level; import java.util.logging.Logger; import static java.util.logging.Level.FINE; @@ -194,7 +196,18 @@ public class JRTConfigRequester implements RequestWaiter { failures = 0; sub.setLastCallBackOKTS(Instant.now()); log.log(FINE, () -> "OK response received in handleOkRequest: " + jrtReq); - sub.updateConfig(jrtReq); + if (jrtReq.hasUpdatedGeneration()) { + sub.updateConfig(jrtReq); + } else if (jrtReq.hasUpdatedConfig()) { + SnippetGenerator generator = new SnippetGenerator(); + int sizeHint = 500; + String config = jrtReq.getNewPayload().toString(); + log.log(Level.WARNING, "Config " + jrtReq.getConfigKey() + " has changed without a change in config generation: generation " + + jrtReq.getNewGeneration() + ", config: " + generator.makeSnippet(config, sizeHint) + + ". This might happen when a newly upgraded config server responds with different config when bootstrapping " + + " (changes to code generating config that are different between versions) or non-deterministic config generation" + + " (e.g. when using collections with non-deterministic iteration order)"); + } scheduleNextRequest(jrtReq, sub, calculateSuccessDelay(), calculateSuccessTimeout()); } 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 653df26bb53..23c38812d64 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 @@ -4,7 +4,6 @@ package com.yahoo.config.subscription.impl; import com.yahoo.config.ConfigInstance; import com.yahoo.config.ConfigurationRuntimeException; import com.yahoo.config.subscription.ConfigInterruptedException; -import com.yahoo.text.internal.SnippetGenerator; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.ConfigPayload; import com.yahoo.vespa.config.TimingValues; @@ -17,7 +16,6 @@ import java.time.Instant; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; -import java.util.logging.Level; import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5; import static java.util.logging.Level.FINE; @@ -65,16 +63,6 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc } else { setNewConfigAndGeneration(response); } - } else if (response.hasUpdatedConfig()) { - SnippetGenerator generator = new SnippetGenerator(); - int sizeHint = 500; - T config = toConfigInstance(response); - log.log(Level.WARNING, "Config " + key + " has changed without a change in config generation: generation " + - response.getNewGeneration() + ", config: " + generator.makeSnippet(config.toString(), sizeHint) + - ". This might happen when a newly upgraded config server responds with different config when bootstrapping " + - " (changes to code generating config that are different between versions) or non-deterministic config generation" + - " (e.g. when using collections with non-deterministic iteration order)"); - setNewConfigAndGeneration(response); } return newConfigOrException(); |