aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-25 16:18:42 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-25 16:18:42 +0100
commit7ae15f46b9a27d2689d47da92bed7079418c7fa6 (patch)
treee9c291b99e9d39c2de108f5841bb9f08ab39a9be
parent5400b26714de2b9edc8960df88cb18807aceb9b8 (diff)
Tolerate missing resource recordings
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java10
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());