summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2021-07-07 09:39:16 +0200
committerGitHub <noreply@github.com>2021-07-07 09:39:16 +0200
commitb76ae942fe2ddea3ff9341d8e1fd9f76394487b4 (patch)
treeff6e153c57e236c6dc2a9df8ffc8afc5d34b3261 /controller-server
parent8efd979ad8a0c939da1dba7dbab274e90d110bd1 (diff)
parent2262513c63aaeb6e107f0f694de6dffdf29a2322 (diff)
Merge pull request #18557 from vespa-engine/mpolden/never-schedule-older-version
Never try to schedule older OS version
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeScheduler.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/OsUpgradeSchedulerTest.java10
2 files changed, 13 insertions, 4 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 5942291f2b0..c2addbe9a67 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
@@ -47,10 +47,9 @@ public class OsUpgradeScheduler extends ControllerMaintainer {
if (currentTarget.isEmpty()) return;
if (upgradingToNewMajor(cloud)) return; // Skip further upgrades until major version upgrade is complete
- controller().upgradeOsIn(cloud,
- release.version(currentTarget.get(), now),
- release.upgradeBudget(),
- false);
+ Version version = release.version(currentTarget.get(), now);
+ if (!version.isAfter(currentTarget.get().osVersion().version())) return;
+ controller().upgradeOsIn(cloud, version, release.upgradeBudget(), false);
}
private boolean upgradingToNewMajor(CloudName cloud) {
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 d87dfcfa315..d80a8ce1152 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
@@ -132,6 +132,16 @@ public class OsUpgradeSchedulerTest {
assertEquals("Target is unchanged as not enough time has passed", version1,
target1.osVersion().version());
assertEquals("Target is not re-scheduled", target0.scheduledAt(), target1.scheduledAt());
+
+ // A newer version is triggered manually
+ Version version3 = Version.fromString("8.3");
+ tester.controller().upgradeOsIn(cloud, version3, Duration.ZERO, false);
+
+ // Enough time passes for stable version to be promoted. Nothing happens as stable is now before the manually
+ // triggered version
+ tester.clock().advance(Duration.ofDays(14).plus(Duration.ofSeconds(1)));
+ scheduler.maintain();
+ assertEquals(version3, tester.controller().osVersionTarget(cloud).get().osVersion().version());
}
private static ZoneApi zone(String id, CloudName cloud) {