aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2022-08-11 14:24:43 +0200
committerGitHub <noreply@github.com>2022-08-11 14:24:43 +0200
commit4ccde972c38a60aa952bbc30a3a004ce57d0e69b (patch)
tree9110d56ab57631fad5ab89c39720691bf34a8414
parent530f5b09a8b7d12650641fdd8f5b2698a4bd528e (diff)
parent2febb592cedfe1b897843a547cd8eb632864bead (diff)
Merge pull request #23630 from vespa-engine/mpolden/fix-trigger-time
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);
+ }
+
}