aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-08-11 13:11:26 +0200
committerMartin Polden <mpolden@mpolden.no>2022-08-11 13:11:26 +0200
commit2febb592cedfe1b897843a547cd8eb632864bead (patch)
tree2bb8b50f4d32a9570a6cc83a6351eac789c55abe
parentf243470365bf989efdc900d9def3c9f63b3593dc (diff)
Use the earliest possible trigger time
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java13
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);
+ }
+
}