From cd2f1f807dbcd4a84b309380eeedcabf557852b5 Mon Sep 17 00:00:00 2001 From: Jon Marius Venstad Date: Fri, 25 May 2018 14:47:25 +0200 Subject: Count exceptions getting current version as not converged --- .../controller/maintenance/SystemUpgrader.java | 23 +++++++++------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'controller-server') diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java index d35458a5a2a..516cd52d710 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java @@ -50,12 +50,15 @@ public class SystemUpgrader extends Maintainer { private void deploy(List applications, Version target) { for (List zones : controller().zoneRegistry().upgradePolicy().asList()) { boolean converged = true; - for (SystemApplication application : applications) { - for (ZoneId zone : zones) { - if (dependenciesConvergedOn(target, application, zone)) { + for (ZoneId zone : zones) { + for (SystemApplication application : applications) { + boolean dependenciesConverged = application.dependencies().stream() + .filter(applications::contains) // TODO: Remove when all() is used. + .allMatch(dependency -> currentVersion(zone, dependency.id()).equals(target)); + if (dependenciesConverged) { deploy(target, application, zone); } - converged &= convergedOn(target, application, zone); + converged &= currentVersion(zone, application.id()).equals(target); } } if (!converged) { @@ -72,20 +75,12 @@ public class SystemUpgrader extends Maintainer { } } - private boolean convergedOn(Version target, SystemApplication application, ZoneId zone) { - return currentVersion(zone, application.id(), target).equals(target); - } - - private boolean dependenciesConvergedOn(Version target, SystemApplication application, ZoneId zone) { - return application.dependencies().stream().allMatch(dependency -> convergedOn(target, dependency, zone)); - } - private Version wantedVersion(ZoneId zone, ApplicationId application, Version defaultVersion) { return minVersion(zone, application, Node::wantedVersion).orElse(defaultVersion); } - private Version currentVersion(ZoneId zone, ApplicationId application, Version defaultVersion) { - return minVersion(zone, application, Node::currentVersion).orElse(defaultVersion); + private Version currentVersion(ZoneId zone, ApplicationId application) { + return minVersion(zone, application, Node::currentVersion).orElse(Version.emptyVersion); } private Optional minVersion(ZoneId zone, ApplicationId application, Function versionField) { -- cgit v1.2.3