diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-10-24 10:32:12 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-11-05 09:17:57 +0100 |
commit | b488286422f60248a50f8508ddd2f727bbb6d10e (patch) | |
tree | 0102d4eeebbe582a05bcf2ede4a59e5a1b8ce040 /controller-server | |
parent | c246d19f5faf4af1466c5ce9fc0e13c2811f1e64 (diff) |
Change block window considerations to view union over all instances
Diffstat (limited to 'controller-server')
4 files changed, 15 insertions, 9 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java index a2487e8a0d1..638f406409f 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/ApplicationList.java @@ -177,7 +177,8 @@ public class ApplicationList { /** Returns the subset of applications that are allowed to upgrade at the given time */ public ApplicationList canUpgradeAt(Instant instant) { - return filteredOn(application -> application.deploymentSpec().canUpgradeAt(instant)); + return filteredOn(application -> application.deploymentSpec().instances().stream() + .allMatch(instance -> instance.canUpgradeAt(instant))); } /** Returns the subset of applications that have at least one assigned rotation */ diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java index 95e1c53f10c..b130f7107dd 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/OutstandingChangeDeployer.java @@ -21,8 +21,9 @@ public class OutstandingChangeDeployer extends Maintainer { @Override protected void maintain() { for (Application application : controller().applications().asList()) { - if (application.outstandingChange().hasTargets() - && application.deploymentSpec().canChangeRevisionAt(controller().clock().instant())) { + if ( application.outstandingChange().hasTargets() + && application.deploymentSpec().instances().stream() + .allMatch(instance -> instance.canChangeRevisionAt(controller().clock().instant()))) { controller().applications().deploymentTrigger().triggerChange(application.id(), application.outstandingChange()); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index e55b08d0b4a..9de0e753ee7 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -737,7 +737,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler { // Change blockers Cursor changeBlockers = object.setArray("changeBlockers"); - deploymentSpec.changeBlocker().forEach(changeBlocker -> { + deploymentSpec.requireInstance(instance.name()).changeBlocker().forEach(changeBlocker -> { Cursor changeBlockerObject = changeBlockers.addObject(); changeBlockerObject.setBool("versions", changeBlocker.blocksVersions()); changeBlockerObject.setBool("revisions", changeBlocker.blocksRevisions()); @@ -843,7 +843,7 @@ public class ApplicationApiHandler extends LoggingRequestHandler { // Change blockers Cursor changeBlockers = object.setArray("changeBlockers"); - application.deploymentSpec().changeBlocker().forEach(changeBlocker -> { + application.deploymentSpec().requireInstance(instance.name()).changeBlocker().forEach(changeBlocker -> { Cursor changeBlockerObject = changeBlockers.addObject(); changeBlockerObject.setBool("versions", changeBlocker.blocksVersions()); changeBlockerObject.setBool("revisions", changeBlocker.blocksRevisions()); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java index 23d2646acd7..08d6b5602fe 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java @@ -177,8 +177,10 @@ class JobControllerApiHandlerHelper { lastPlatformObject.setString("deploying", completed + " of " + steps.productionJobs().size() + " complete"); else if (completed == steps.productionJobs().size()) lastPlatformObject.setString("completed", completed + " of " + steps.productionJobs().size() + " complete"); - else if ( ! application.deploymentSpec().canUpgradeAt(controller.clock().instant())) { - lastPlatformObject.setString("blocked", application.deploymentSpec().changeBlocker().stream() + else if ( ! application.deploymentSpec().instances().stream() + .allMatch(spec -> spec.canUpgradeAt(controller.clock().instant()))) { + lastPlatformObject.setString("blocked", application.deploymentSpec().instances().stream() + .flatMap(spec -> spec.changeBlocker().stream()) .filter(blocker -> blocker.blocksVersions()) .filter(blocker -> blocker.window().includes(controller.clock().instant())) .findAny().map(blocker -> blocker.window().toString()).get()); @@ -200,8 +202,10 @@ class JobControllerApiHandlerHelper { lastApplicationObject.setString("deploying", completed + " of " + steps.productionJobs().size() + " complete"); else if (completed == steps.productionJobs().size()) lastApplicationObject.setString("completed", completed + " of " + steps.productionJobs().size() + " complete"); - else if ( ! application.deploymentSpec().canChangeRevisionAt(controller.clock().instant())) { - lastApplicationObject.setString("blocked", application.deploymentSpec().changeBlocker().stream() + else if ( ! application.deploymentSpec().instances().stream() + .allMatch(spec -> spec.canChangeRevisionAt(controller.clock().instant()))) { + lastApplicationObject.setString("blocked", application.deploymentSpec().instances().stream() + .flatMap(spec -> spec.changeBlocker().stream()) .filter(blocker -> blocker.blocksRevisions()) .filter(blocker -> blocker.window().includes(controller.clock().instant())) .findAny().map(blocker -> blocker.window().toString()).get()); |