aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository/src/main
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2024-04-25 09:05:46 +0200
committerGitHub <noreply@github.com>2024-04-25 09:05:46 +0200
commit559c1385165e6037c805ea047802c6cc845598ea (patch)
treee186f7bd7111106b81316ea8c99c5ba130bc49f5 /node-repository/src/main
parent86021bcbcba7059455eafcccaa6890336d7c72e4 (diff)
parent89f1747d8123e53f12cee51f70a2a1d519feedbc (diff)
Merge pull request #31026 from vespa-engine/bratseth/group-adjustments
Only adjust groups if we adjust nodes
Diffstat (limited to 'node-repository/src/main')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java16
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