diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-08-11 13:11:26 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-08-11 13:11:26 +0200 |
commit | 2febb592cedfe1b897843a547cd8eb632864bead (patch) | |
tree | 2bb8b50f4d32a9570a6cc83a6351eac789c55abe | |
parent | f243470365bf989efdc900d9def3c9f63b3593dc (diff) |
Use the earliest possible trigger time
2 files changed, 13 insertions, 5 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java index 644a8c6c1ed..5fa90d98c18 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java @@ -62,9 +62,10 @@ public class OsUpgradeScheduler extends ControllerMaintainer { } else if (!wantedVersion.isAfter(currentVersion)) { return Optional.empty(); // No change right now, and we cannot predict the next change for this kind of release } - // Find trigger time + // Find the earliest possible trigger time on this day + instant = instant.truncatedTo(ChronoUnit.DAYS); while (!canTriggerAt(instant)) { - instant = instant.truncatedTo(ChronoUnit.HOURS).plus(Duration.ofHours(1)); + instant = instant.plus(Duration.ofHours(1)); } return Optional.of(new Change(wantedVersion, release.upgradeBudget(), instant)); } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java index fac15cd23c4..ddd2163b426 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java @@ -62,7 +62,11 @@ public class OsUpgradeSchedulerTest { assertEquals(version0, tester.controller().osVersionTarget(cloud).get().osVersion().version(), "Target is unchanged because we're outside trigger period"); - tester.clock().advance(Duration.ofHours(7).plusMinutes(5)); // Put us inside the trigger period + tester.clock().advance(Duration.ofHours(9).plusMinutes(5)); // Put us inside the trigger period + assertEquals("2022-03-17T09:05:00", formatInstant(tester.clock().instant())); + Optional<OsUpgradeScheduler.Change> change = scheduler.changeIn(cloud); + assertTrue(change.isPresent()); + assertEquals("2022-03-17T07:00:00", formatInstant(change.get().scheduleAt())); scheduler.maintain(); assertEquals(version1, tester.controller().osVersionTarget(cloud).get().osVersion().version(), @@ -77,8 +81,7 @@ public class OsUpgradeSchedulerTest { Optional<OsUpgradeScheduler.Change> nextChange = scheduler.changeIn(cloud); assertTrue(nextChange.isPresent()); assertEquals("7.0.0.20220425", nextChange.get().version().toFullString()); - assertEquals("2022-05-02T07:00:00", LocalDateTime.ofInstant(nextChange.get().scheduleAt(), ZoneOffset.UTC) - .format(DateTimeFormatter.ISO_DATE_TIME)); + assertEquals("2022-05-02T07:00:00", formatInstant(nextChange.get().scheduleAt())); } @Test @@ -163,4 +166,8 @@ public class OsUpgradeSchedulerTest { return ZoneApiMock.newBuilder().withId(id).with(cloud).build(); } + private static String formatInstant(Instant instant) { + return LocalDateTime.ofInstant(instant, ZoneOffset.UTC).format(DateTimeFormatter.ISO_DATE_TIME); + } + } |