aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-16 22:07:52 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-16 22:09:05 +0100
commit470900a01730d2083971b550d2c87c78338b308d (patch)
tree33389625c09df8bb0a694bfbce51d3b3ee312ec0 /config
parent2d57c43d9a7ca2142d04b0196a173ce69334acd4 (diff)
If timeout has already expired, no need to take expensive time samples.
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java9
1 files changed, 7 insertions, 2 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 a89d60108ac..ee6ce37036c 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
@@ -279,7 +279,8 @@ public class ConfigSubscriber implements AutoCloseable {
state = State.FROZEN;
applyOnRestartOnly = applyOnRestart;
}
- long started = System.currentTimeMillis();
+ boolean expiredOnEntry = (timeoutInMillis <= 0);
+ long started = now(expiredOnEntry);
long timeLeftMillis = timeoutInMillis;
boolean anyConfigChanged = false;
@@ -308,7 +309,7 @@ public class ConfigSubscriber implements AutoCloseable {
allGenerationsChanged &= config.isGenerationChanged();
anyConfigChanged |= config.isConfigChanged();
applyOnRestartOnly |= config.applyOnRestart();
- timeLeftMillis = timeoutInMillis + started - System.currentTimeMillis();
+ timeLeftMillis = timeoutInMillis + started - now(expiredOnEntry);
}
reconfigDue = (isInitializing || !applyOnRestartOnly) && (anyConfigChanged || !requireChange)
&& allGenerationsChanged && allGenerationsTheSame;
@@ -335,6 +336,10 @@ public class ConfigSubscriber implements AutoCloseable {
return reconfigDue;
}
+ private long now(boolean alreadyExpired) {
+ return alreadyExpired ? 0 : System.currentTimeMillis();
+ }
+
private void sleep(long timeLeftMillis) {
try {
Thread.sleep(Math.min(10, timeLeftMillis));