diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2021-07-07 09:39:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-07 09:39:16 +0200 |
commit | b76ae942fe2ddea3ff9341d8e1fd9f76394487b4 (patch) | |
tree | ff6e153c57e236c6dc2a9df8ffc8afc5d34b3261 /controller-server | |
parent | 8efd979ad8a0c939da1dba7dbab274e90d110bd1 (diff) | |
parent | 2262513c63aaeb6e107f0f694de6dffdf29a2322 (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')
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) { |