summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-10-14 10:47:55 +0200
committerHarald Musum <musum@yahooinc.com>2021-10-14 10:47:55 +0200
commit4ffb287d650b52303ea8b51858f6746657ffe1ad (patch)
treea4727b5cfcbfbd2c13089f8b07065f99d4633d89 /config
parentadad7cc066e7debe8137737a8ce9c6ce377a2c1a (diff)
Don't track more than 10 failures and make sure delay has a minimum
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigRequester.java5
1 files changed, 3 insertions, 2 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 c88bdf9f3b8..4c1d7b39755 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
@@ -165,7 +165,8 @@ public class JRTConfigRequester implements RequestWaiter {
log.log(INFO, "Failure of config subscription to " + connection.getAddress() +
", clients will keep existing config until resolved: " + sub);
connectionPool.switchConnection(connection);
- failures++;
+ if (failures < 10)
+ failures++;
long delay = calculateFailedRequestDelay(failures, timingValues);
// The logging depends on whether we are configured or not.
Level logLevel = sub.getConfigState().getConfig() == null ? Level.FINE : Level.INFO;
@@ -177,7 +178,7 @@ public class JRTConfigRequester implements RequestWaiter {
static long calculateFailedRequestDelay(int failures, TimingValues timingValues) {
long delay = timingValues.getFixedDelay() * (long)Math.pow(2, failures);
- delay = Math.min(60_000, delay);
+ delay = Math.max(timingValues.getFixedDelay(), Math.min(60_000, delay)); // between timingValues.getFixedDelay() and 60 seconds
delay = timingValues.getPlusMinusFractionRandom(delay, randomFraction);
return delay;