diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-01-25 16:18:42 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-01-25 16:18:42 +0100 |
commit | 7ae15f46b9a27d2689d47da92bed7079418c7fa6 (patch) | |
tree | e9c291b99e9d39c2de108f5841bb9f08ab39a9be | |
parent | 5400b26714de2b9edc8960df88cb18807aceb9b8 (diff) |
Tolerate missing resource recordings
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java index c1d5620e020..cbfbf2236d4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java @@ -31,8 +31,9 @@ public class ResourcesReductionValidator implements ChangeValidator { VespaModel currentModel, VespaModel nextModel, DeployState deployState) { - ClusterResources current = withNodeResources(currentModel.provisioned().all().get(clusterId).maxResources(), clusterId, currentModel); - ClusterResources next = withNodeResources(nextModel.provisioned().all().get(clusterId).maxResources(), clusterId, nextModel); + ClusterResources current = clusterResources(clusterId, currentModel); + ClusterResources next = clusterResources(clusterId, nextModel); + if (current == null || next == null) return; // No request recording - test if (current.nodeResources().isUnspecified() || next.nodeResources().isUnspecified()) { // Self-hosted - unspecified resources; compare node count int currentNodes = current.nodes(); @@ -67,7 +68,10 @@ public class ResourcesReductionValidator implements ChangeValidator { * the current node resources of the cluster, as that is what unspecified resources actually resolved to. * This will always yield specified node resources on hosted instances and never on self-hosted instances. */ - private ClusterResources withNodeResources(ClusterResources resources, ClusterSpec.Id id, VespaModel model) { + private ClusterResources clusterResources(ClusterSpec.Id id, VespaModel model) { + if ( ! model.provisioned().all().containsKey(id)) return null; + + ClusterResources resources = model.provisioned().all().get(id).maxResources(); if ( ! resources.nodeResources().isUnspecified()) return resources; var containerCluster = model.getContainerClusters().get(id.value()); |