From 470900a01730d2083971b550d2c87c78338b308d Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 16 Feb 2022 22:07:52 +0100 Subject: If timeout has already expired, no need to take expensive time samples. --- .../java/com/yahoo/config/subscription/ConfigSubscriber.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'config') 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)); -- cgit v1.2.3