diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2022-08-11 14:24:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-11 14:24:43 +0200 |
commit | 4ccde972c38a60aa952bbc30a3a004ce57d0e69b (patch) | |
tree | 9110d56ab57631fad5ab89c39720691bf34a8414 | |
parent | 530f5b09a8b7d12650641fdd8f5b2698a4bd528e (diff) | |
parent | 2febb592cedfe1b897843a547cd8eb632864bead (diff) |
Merge pull request #23630 from vespa-engine/mpolden/fix-trigger-time
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); + } + } |