aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2019-10-29 10:46:59 +0100
committerGitHub <noreply@github.com>2019-10-29 10:46:59 +0100
commitf7dbaaf6208a6d7d565cb376093a12ecf619f6d0 (patch)
treebf2ac4d6572dcde9da81239be43955e4d622eaf6
parentfb369b1694935933d888533bab79435238107dd5 (diff)
parent650b5b5dc8ee137b451583a2e774f6c30f9898e7 (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.java9
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);
+ }
+
}