summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2019-05-31 14:26:41 +0200
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2019-05-31 14:26:41 +0200
commit5482c9e52aaac5d8e2b473218bfcc967954d977b (patch)
tree2c5bc42f1217992219229b197e05697e55ea10b3 /controller-server
parent9595ead354b4fd235de80981b03c40bf6d9995af (diff)
Supply Vespa version to config convergence
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java11
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/SystemUpgrader.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java2
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java2
5 files changed, 13 insertions, 10 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
index 26233c998f8..3eeaf09c10b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/SystemApplication.java
@@ -1,6 +1,7 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.application;
+import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.NodeType;
import com.yahoo.config.provision.zone.ZoneId;
@@ -9,6 +10,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ServiceConvergence;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -61,11 +63,11 @@ public enum SystemApplication {
}
/** Returns whether config for this application has converged in given zone */
- public boolean configConvergedIn(ZoneId zone, Controller controller) {
+ public boolean configConvergedIn(ZoneId zone, Controller controller, Optional<Version> version) {
if (!hasApplicationPackage()) {
return true;
}
- return controller.configServer().serviceConvergence(new DeploymentId(id(), zone))
+ return controller.configServer().serviceConvergence(new DeploymentId(id(), zone), version)
.map(ServiceConvergence::converged)
.orElse(false);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
index 0134e4411db..68e84c7d289 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalStepRunner.java
@@ -268,7 +268,7 @@ public class InternalStepRunner implements StepRunner {
logger.log("Checking installation of " + platform + " and " + application.id() + " ...");
if ( nodesConverged(id.application(), id.type(), platform, logger)
- && servicesConverged(id.application(), id.type(), logger)) {
+ && servicesConverged(id.application(), id.type(), platform, logger)) {
if (endpointsAvailable(id.application(), id.type().zone(controller.system()), logger)) {
logger.log("Installation succeeded!");
return Optional.of(running);
@@ -298,7 +298,7 @@ public class InternalStepRunner implements StepRunner {
Version platform = controller.jobController().run(id).get().versions().targetPlatform();
logger.log("Checking installation of tester container ...");
if ( nodesConverged(id.tester().id(), id.type(), platform, logger)
- && servicesConverged(id.tester().id(), id.type(), logger)) {
+ && servicesConverged(id.tester().id(), id.type(), platform, logger)) {
if (endpointsAvailable(id.tester().id(), id.type().zone(controller.system()), logger)) {
logger.log("Tester container successfully installed!");
return Optional.of(running);
@@ -354,9 +354,10 @@ public class InternalStepRunner implements StepRunner {
&& node.rebootGeneration() >= node.wantedRebootGeneration());
}
- private boolean servicesConverged(ApplicationId id, JobType type, DualLogger logger) {
- Optional<ServiceConvergence> convergence = controller.configServer().serviceConvergence(new DeploymentId(id, type.zone(controller.system())));
- if ( ! convergence.isPresent()) {
+ private boolean servicesConverged(ApplicationId id, JobType type, Version platform, DualLogger logger) {
+ var convergence = controller.configServer().serviceConvergence(new DeploymentId(id, type.zone(controller.system())),
+ Optional.of(platform));
+ if (convergence.isEmpty()) {
logger.log("Config status not currently available -- will retry.");
return false;
}
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 62d401cf478..3c2455b314a 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
@@ -42,7 +42,7 @@ public class SystemUpgrader extends InfrastructureUpgrader {
protected boolean convergedOn(Version target, SystemApplication application, ZoneId zone) {
return minVersion(zone, application, Node::currentVersion).map(target::equals)
.orElse(true)
- && application.configConvergedIn(zone, controller());
+ && application.configConvergedIn(zone, controller(), Optional.of(target));
}
@Override
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
index e2d4c90f443..879575669cd 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/versions/VersionStatus.java
@@ -157,7 +157,7 @@ public class VersionStatus {
ListMap<Version, HostName> versions = new ListMap<>();
for (ZoneId zone : zones) {
for (SystemApplication application : SystemApplication.all()) {
- boolean configConverged = application.configConvergedIn(zone, controller);
+ boolean configConverged = application.configConvergedIn(zone, controller, Optional.empty());
if (!configConverged) {
log.log(LogLevel.WARNING, "Config for " + application.id() + " in " + zone + " has not converged");
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
index 913c9a800c1..31b48bea883 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
@@ -195,7 +195,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
}
@Override
- public Optional<ServiceConvergence> serviceConvergence(DeploymentId deployment) {
+ public Optional<ServiceConvergence> serviceConvergence(DeploymentId deployment, Optional<Version> version) {
return Optional.ofNullable(serviceStatus.get(deployment));
}