diff options
author | Martin Polden <mpolden@mpolden.no> | 2024-04-25 09:05:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-25 09:05:46 +0200 |
commit | 559c1385165e6037c805ea047802c6cc845598ea (patch) | |
tree | e186f7bd7111106b81316ea8c99c5ba130bc49f5 /node-repository | |
parent | 86021bcbcba7059455eafcccaa6890336d7c72e4 (diff) | |
parent | 89f1747d8123e53f12cee51f70a2a1d519feedbc (diff) |
Merge pull request #31026 from vespa-engine/bratseth/group-adjustments
Only adjust groups if we adjust nodes
Diffstat (limited to 'node-repository')
-rw-r--r-- | node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java index ec48e1d5f34..46dfb51a433 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java @@ -49,15 +49,13 @@ public class CapacityPolicies { } private ClusterResources applyOn(ClusterResources resources, Capacity capacity, ApplicationId application, boolean exclusive) { - int nodes = decideSize(resources.nodes(), capacity.isRequired(), application.instance().isTester()); - int groups = Math.min(resources.groups(), nodes); // cannot have more groups than nodes - while (groups > 1 && nodes % groups != 0) - groups--; // Must be divisible by the number of groups + int nodes = decideCount(resources.nodes(), capacity.isRequired(), application.instance().isTester()); + int groups = decideGroups(resources.nodes(), resources.groups(), nodes); var nodeResources = decideNodeResources(resources.nodeResources(), capacity.isRequired(), exclusive); return new ClusterResources(nodes, groups, nodeResources); } - private int decideSize(int requested, boolean required, boolean isTester) { + private int decideCount(int requested, boolean required, boolean isTester) { if (isTester) return 1; if (required) return requested; @@ -69,6 +67,14 @@ public class CapacityPolicies { }; } + private int decideGroups(int requestedNodes, int requestedGroups, int decidedNodes) { + if (requestedNodes == decidedNodes) return requestedGroups; + int groups = Math.min(requestedGroups, decidedNodes); // cannot have more groups than nodes + while (groups > 1 && decidedNodes % groups != 0) + groups--; // Must be divisible by the number of groups + return groups; + } + private NodeResources decideNodeResources(NodeResources target, boolean required, boolean exclusive) { if (required || exclusive) return target; // Cannot downsize if resources are required, or exclusively allocated if (target.isUnspecified()) return target; // Cannot be modified |