diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-02-28 12:28:21 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-02-28 12:28:21 +0100 |
commit | 7a0c9c66710b2bec22a7f2999b4ce938475b8a2c (patch) | |
tree | 392238d9a43f89fdbdd030c7e1a41552bf89c5da /controller-server | |
parent | f2c3ffc3ec33267b46aaa767de8c969a511af3a4 (diff) |
Track DeploymentInfoMaintainer success
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentInfoMaintainer.java | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentInfoMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentInfoMaintainer.java index cf9db1517a0..f6029eade37 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentInfoMaintainer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentInfoMaintainer.java @@ -1,6 +1,5 @@ package com.yahoo.vespa.hosted.controller.maintenance; -import com.yahoo.vespa.hosted.controller.Application; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.Instance; import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId; @@ -9,7 +8,7 @@ import com.yahoo.vespa.hosted.controller.api.integration.configserver.NodeReposi import com.yahoo.yolean.Exceptions; import java.time.Duration; -import java.util.stream.Stream; +import java.util.Collection; /** * This pulls application deployment information from the node repo on all config servers, @@ -28,29 +27,35 @@ public class DeploymentInfoMaintainer extends ControllerMaintainer { @Override protected double maintain() { - controller().applications().asList().stream() - .flatMap(this::mapApplicationToInstances) - .flatMap(this::mapInstanceToDeployments) - .forEach(this::updateDeploymentInfo); - return 1.0; - } - - private Stream<Instance> mapApplicationToInstances(Application application) { - return application.instances().values().stream(); + int attempts = 0; + int failures = 0; + for (var application : controller().applications().asList()) { + for (var instance : application.instances().values()) { + for (var deployment : instanceDeployments(instance)) { + attempts++; + if ( ! updateDeploymentInfo(deployment)) + failures++; + } + } + } + return asSuccessFactor(attempts, failures); } - private Stream<DeploymentId> mapInstanceToDeployments(Instance instance) { + private Collection<DeploymentId> instanceDeployments(Instance instance) { return instance.deployments().keySet().stream() .filter(zoneId -> !zoneId.environment().isTest()) - .map(zoneId -> new DeploymentId(instance.id(), zoneId)); + .map(zoneId -> new DeploymentId(instance.id(), zoneId)) + .toList(); } - private void updateDeploymentInfo(DeploymentId id) { + private boolean updateDeploymentInfo(DeploymentId id) { try { controller().applications().deploymentInfo().put(id, nodeRepository.getApplication(id.zoneId(), id.applicationId())); + return true; } catch (ConfigServerException e) { log.info("Could not retrieve deployment info for " + id + ": " + Exceptions.toMessageString(e)); + return false; } } |