diff options
author | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-09-29 20:21:42 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@yahooinc.com> | 2021-09-29 20:21:42 +0200 |
commit | 0c266792971f88d6b51a92321e7b39bf214c815b (patch) | |
tree | bd9d2500d368ea789668c23dcd807cac8de285cd /node-repository/src/main/java/com | |
parent | 1bc2cca4b527bb9a5a8c67744b0796c9fafbe024 (diff) |
Allow in-place resize for non-content nodes when decreasing resources and increasing cluster size
Diffstat (limited to 'node-repository/src/main/java/com')
2 files changed, 6 insertions, 4 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java index e506216f13d..1f618a18d24 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java @@ -191,6 +191,7 @@ public class NodePrioritizer { parent.exclusiveToApplicationId().isEmpty() && requestedNodes.canResize(node.resources(), capacity.availableCapacityOf(parent), + clusterSpec.type(), topologyChange, currentClusterSize)); } else { diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java index a84f35a314b..48cfe671248 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeSpec.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.provisioning; +import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provision.NodeFlavors; import com.yahoo.config.provision.NodeResources; @@ -72,7 +73,7 @@ public interface NodeSpec { * in-place to resources in this spec. */ default boolean canResize(NodeResources currentNodeResources, NodeResources currentSpareHostResources, - boolean hasTopologyChange, int currentClusterSize) { + ClusterSpec.Type type, boolean hasTopologyChange, int currentClusterSize) { return false; } @@ -153,12 +154,12 @@ public interface NodeSpec { @Override public boolean canResize(NodeResources currentNodeResources, NodeResources currentSpareHostResources, - boolean hasTopologyChange, int currentClusterSize) { + ClusterSpec.Type type, boolean hasTopologyChange, int currentClusterSize) { // Never allow in-place resize when also changing topology or decreasing cluster size if (hasTopologyChange || count < currentClusterSize) return false; - // Do not allow increasing cluster size and decreasing node resources at the same time - if (count > currentClusterSize && !requestedNodeResources.satisfies(currentNodeResources.justNumbers())) + // Do not allow increasing cluster size and decreasing node resources at the same time for content nodes + if (type.isContent() && count > currentClusterSize && !requestedNodeResources.satisfies(currentNodeResources.justNumbers())) return false; // Otherwise, allowed as long as the host can satisfy the new requested resources |