diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2024-04-22 12:34:04 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2024-04-22 12:34:04 +0200 |
commit | 8022e363fe84224c7653856ce0c65cee56f8dac9 (patch) | |
tree | 5b3b7a7f0f7f45f8f094b4b1d465d4be1325a562 /node-repository | |
parent | 67b83227941ad3327207b5dbbdc9ebbf72f684f6 (diff) |
Downscale groups
Diffstat (limited to 'node-repository')
2 files changed, 19 insertions, 1 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 a1306d7831a..ec48e1d5f34 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 @@ -51,6 +51,8 @@ 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 var nodeResources = decideNodeResources(resources.nodeResources(), capacity.isRequired(), exclusive); return new ClusterResources(nodes, groups, nodeResources); } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java index ff5ffd82bf1..a91902c8eba 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/DynamicAllocationTest.java @@ -399,7 +399,7 @@ public class DynamicAllocationTest { } @Test - public void node_resources_are_relaxed_in_dev() { + public void node_resources_are_reduced_in_dev() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.fast)), NodeType.host, 10, true); tester.makeReadyNodes(2, new Flavor(new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.slow)), NodeType.host, 10, true); @@ -419,6 +419,22 @@ public class DynamicAllocationTest { } @Test + public void node_resources_are_reduced_in_staging() { + var resources = new NodeResources(1, 8, 120, 1, NodeResources.DiskSpeed.fast); + ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.staging, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); + tester.makeReadyNodes(3, new Flavor(resources), NodeType.host, 10, true); + tester.activateTenantHosts(); + + ApplicationId application = ProvisioningTester.applicationId(); + ClusterSpec cluster = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("test")).vespaVersion("1").build(); + + List<HostSpec> hosts = tester.prepare(application, cluster, 36, 2, resources); + tester.activate(application, hosts); + assertEquals(3, hosts.size()); + assertEquals(1, hosts.stream().map(host -> host.membership().get().cluster().group().get()).distinct().count()); + } + + @Test public void switching_from_legacy_flavor_syntax_to_resources_does_not_cause_reallocation() { ProvisioningTester tester = new ProvisioningTester.Builder().zone(new Zone(Environment.prod, RegionName.from("us-east"))).flavorsConfig(flavorsConfig()).build(); tester.makeReadyNodes(2, new Flavor(new NodeResources(5, 20, 1400, 3)), NodeType.host, 10, true); |