diff options
2 files changed, 12 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java index cec44c5d3a0..779b8dcdfcc 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Maintainer.java @@ -116,7 +116,7 @@ public abstract class Maintainer extends AbstractComponent implements Runnable { long offset = cluster.indexOf(host) * interval.toMillis() / cluster.size(); long timeUntilNextRun = Math.floorMod(offset - now.toEpochMilli(), interval.toMillis()); - return timeUntilNextRun + interval.toMillis() / cluster.size(); + return timeUntilNextRun; } } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MaintainerTest.java index 3aa1f2b5af2..efd5d61ce56 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MaintainerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/MaintainerTest.java @@ -38,17 +38,22 @@ public class MaintainerTest { @Test public void staggering() { List<HostName> cluster = List.of(HostName.from("cfg1"), HostName.from("cfg2"), HostName.from("cfg3")); - Instant now = Instant.ofEpochMilli(1001); Duration interval = Duration.ofMillis(300); - assertEquals(299, Maintainer.staggeredDelay(cluster, HostName.from("cfg1"), now, interval)); - assertEquals(399, Maintainer.staggeredDelay(cluster, HostName.from("cfg2"), now, interval)); - assertEquals(199, Maintainer.staggeredDelay(cluster, HostName.from("cfg3"), now, interval)); + Instant now = Instant.ofEpochMilli(1000); + assertEquals(200, Maintainer.staggeredDelay(cluster, HostName.from("cfg1"), now, interval)); + assertEquals( 0, Maintainer.staggeredDelay(cluster, HostName.from("cfg2"), now, interval)); + assertEquals(100, Maintainer.staggeredDelay(cluster, HostName.from("cfg3"), now, interval)); - now = Instant.ofEpochMilli(1101); + now = Instant.ofEpochMilli(1001); assertEquals(199, Maintainer.staggeredDelay(cluster, HostName.from("cfg1"), now, interval)); assertEquals(299, Maintainer.staggeredDelay(cluster, HostName.from("cfg2"), now, interval)); - assertEquals(399, Maintainer.staggeredDelay(cluster, HostName.from("cfg3"), now, interval)); + assertEquals( 99, Maintainer.staggeredDelay(cluster, HostName.from("cfg3"), now, interval)); + + now = Instant.ofEpochMilli(1101); + assertEquals( 99, Maintainer.staggeredDelay(cluster, HostName.from("cfg1"), now, interval)); + assertEquals(199, Maintainer.staggeredDelay(cluster, HostName.from("cfg2"), now, interval)); + assertEquals(299, Maintainer.staggeredDelay(cluster, HostName.from("cfg3"), now, interval)); assertEquals(300, Maintainer.staggeredDelay(cluster, HostName.from("cfg0"), now, interval)); } |