diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2019-10-29 10:46:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-29 10:46:59 +0100 |
commit | f7dbaaf6208a6d7d565cb376093a12ecf619f6d0 (patch) | |
tree | bf2ac4d6572dcde9da81239be43955e4d622eaf6 | |
parent | fb369b1694935933d888533bab79435238107dd5 (diff) | |
parent | 650b5b5dc8ee137b451583a2e774f6c30f9898e7 (diff) |
Merge pull request #11147 from vespa-engine/mpolden/avoid-throttling-canaries
Do not throttle upgrade of canaries
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java index c89d74864cb..c20904710ea 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/Upgrader.java @@ -102,7 +102,9 @@ public class Upgrader extends Maintainer { applications = applications.notFailingOn(version); // try to upgrade only if it hasn't failed on this version applications = applications.canUpgradeAt(controller().clock().instant()); // wait with applications that are currently blocking upgrades applications = applications.byIncreasingDeployedVersion(); // start with lowest versions - applications = applications.first(numberOfApplicationsToUpgrade()); // throttle upgrades + if (!containsOnlyCanaries(applications)) { // throttle upgrades of non-canaries + applications = applications.first(numberOfApplicationsToUpgrade()); + } for (Application application : applications.asList()) controller().applications().deploymentTrigger().triggerChange(application.id(), Change.of(version)); } @@ -171,4 +173,9 @@ public class Upgrader extends Maintainer { controller().removeConfidenceOverride(version::equals); } + /** Returns whether all given applications are canaries */ + private static boolean containsOnlyCanaries(ApplicationList applications) { + return applications.asList().stream().allMatch(application -> application.deploymentSpec().upgradePolicy() == UpgradePolicy.canary); + } + } |