summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-10-29 09:59:05 +0100
committerMartin Polden <mpolden@mpolden.no>2019-10-29 09:59:05 +0100
commit650b5b5dc8ee137b451583a2e774f6c30f9898e7 (patch)
treedc3c9a8c10620eea9a32dbb02837dd3a3a9d912a /controller-server
parent26071f79b70e6ecc2ab00952caa55ca20156d6e7 (diff)
Do not throttle upgrade of canaries
Diffstat (limited to 'controller-server')
-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);
+ }
+
}