diff options
4 files changed, 38 insertions, 32 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java index c9e71e7b58d..538a1b49d24 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java @@ -153,13 +153,13 @@ public class ClusterControllerConfig extends AnyConfigProducer implements Fleetc private static Optional<Integer> maxGroupsAllowedDown(ModelElement tuning, boolean allowMoreThanOneContentGroupDown, int numberOfLeafGroups) { - var minGroupsUpRatio = tuning.childAsDouble("min-group-up-ratio"); + var groupsAllowedDownRatio = tuning.childAsDouble("groups-allowed-down-ratio"); - if (minGroupsUpRatio != null) { - if (minGroupsUpRatio < 0.01 || minGroupsUpRatio > 1) - throw new IllegalArgumentException("min-groups-up-ratio must be between 0.01 and 1, got " + minGroupsUpRatio); - double minGroupsUp = minGroupsUpRatio * numberOfLeafGroups; - var maxGroupsAllowedDown = Math.max(1, numberOfLeafGroups - (int) Math.ceil(minGroupsUp)); + if (groupsAllowedDownRatio != null) { + if (groupsAllowedDownRatio < 0 || groupsAllowedDownRatio > 1) + throw new IllegalArgumentException("groups-allowed-down-ratio must be between 0 and 1, got " + groupsAllowedDownRatio); + + var maxGroupsAllowedDown = Math.max(1, (int) Math.floor(groupsAllowedDownRatio * numberOfLeafGroups)); return allowMoreThanOneContentGroupDown ? Optional.of(maxGroupsAllowedDown) : Optional.empty(); } diff --git a/config-model/src/main/resources/schema/content.rnc b/config-model/src/main/resources/schema/content.rnc index 9705e2d8f5f..c265350cb85 100644 --- a/config-model/src/main/resources/schema/content.rnc +++ b/config-model/src/main/resources/schema/content.rnc @@ -82,7 +82,7 @@ ClusterControllerTuning = element cluster-controller { element stable-state-period { xsd:string { pattern = "([0-9\.]+)\s*([a-z]+)?" } }? & element min-distributor-up-ratio { xsd:double }? & element min-storage-up-ratio { xsd:double }? & - element min-group-up-ratio { xsd:double }? + element groups-allowed-down-ratio { xsd:double }? } DispatchTuning = element dispatch { diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 730736a128d..4ac9fdef9a6 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -2375,7 +2375,7 @@ public class ModelProvisioningTest { " <nodes count='4' groups='4'/>" + " <tuning>" + " <cluster-controller>" + - " <min-group-up-ratio>0.5</min-group-up-ratio>" + + " <groups-allowed-down-ratio>0.5</groups-allowed-down-ratio>" + " </cluster-controller>" + " </tuning>" + " </content>" + diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java index 7034a6878e1..ef2767249a5 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java @@ -1423,26 +1423,32 @@ public class ContentClusterTest extends ContentBaseTest { @Test void testGroupsAllowedToBeDown() { - assertMaxAllowedGroupsDown(1, 0.5, 1); - assertMaxAllowedGroupsDown(2, 0.5, 1); - assertMaxAllowedGroupsDown(3, 0.5, 1); - assertMaxAllowedGroupsDown(4, 0.5, 2); - assertMaxAllowedGroupsDown(5, 0.5, 2); - assertMaxAllowedGroupsDown(6, 0.5, 3); - - assertMaxAllowedGroupsDown(1, 0.33, 1); - assertMaxAllowedGroupsDown(2, 0.33, 1); - assertMaxAllowedGroupsDown(3, 0.33, 2); - assertMaxAllowedGroupsDown(4, 0.33, 2); - assertMaxAllowedGroupsDown(5, 0.33, 3); - assertMaxAllowedGroupsDown(6, 0.33, 4); - - assertMaxAllowedGroupsDown(1, 0.67, 1); - assertMaxAllowedGroupsDown(2, 0.67, 1); - assertMaxAllowedGroupsDown(3, 0.67, 1); - assertMaxAllowedGroupsDown(4, 0.67, 1); - assertMaxAllowedGroupsDown(5, 0.67, 1); - assertMaxAllowedGroupsDown(6, 0.67, 1); + assertGroupsAllowedsDown(1, 0.5, 1); + assertGroupsAllowedsDown(2, 0.5, 1); + assertGroupsAllowedsDown(3, 0.5, 1); + assertGroupsAllowedsDown(4, 0.5, 2); + assertGroupsAllowedsDown(5, 0.5, 2); + assertGroupsAllowedsDown(6, 0.5, 3); + + assertGroupsAllowedsDown(1, 0.33, 1); + assertGroupsAllowedsDown(2, 0.33, 1); + assertGroupsAllowedsDown(3, 0.33, 1); + assertGroupsAllowedsDown(4, 0.33, 1); + assertGroupsAllowedsDown(5, 0.33, 1); + assertGroupsAllowedsDown(6, 0.33, 1); + + assertGroupsAllowedsDown(1, 0.67, 1); + assertGroupsAllowedsDown(2, 0.67, 1); + assertGroupsAllowedsDown(3, 0.67, 2); + assertGroupsAllowedsDown(4, 0.67, 2); + assertGroupsAllowedsDown(5, 0.67, 3); + assertGroupsAllowedsDown(6, 0.67, 4); + + assertGroupsAllowedsDown(1, 0, 1); + assertGroupsAllowedsDown(2, 0, 1); + + assertGroupsAllowedsDown(1, 1, 1); + assertGroupsAllowedsDown(2, 1, 2); } private void assertIndexingDocprocEnabled(boolean indexed, boolean force, boolean expEnabled) { @@ -1482,15 +1488,15 @@ public class ContentClusterTest extends ContentBaseTest { assertIndexingDocprocEnabled(false, true, true); } - private void assertMaxAllowedGroupsDown(int groupCount, double minGroupUpRatio, int expectedMaxAllowedGroupsDown) { - var services = servicesWithGroups(groupCount, minGroupUpRatio); + private void assertGroupsAllowedsDown(int groupCount, double groupsAllowedDown, int expectedGroupsAllowedDown) { + var services = servicesWithGroups(groupCount, groupsAllowedDown); var model = createEnd2EndOneNode(new TestProperties().setAllowMoreThanOneContentGroupDown(true), services); var fleetControllerConfigBuilder = new FleetcontrollerConfig.Builder(); model.getConfig(fleetControllerConfigBuilder, "admin/cluster-controllers/0/components/clustercontroller-storage-configurer"); var config = fleetControllerConfigBuilder.build(); - assertEquals(expectedMaxAllowedGroupsDown, config.max_number_of_groups_allowed_to_be_down()); + assertEquals(expectedGroupsAllowedDown, config.max_number_of_groups_allowed_to_be_down()); } private String servicesWithGroups(int groupCount, double minGroupUpRatio) { @@ -1522,7 +1528,7 @@ public class ContentClusterTest extends ContentBaseTest { String.format(" </group>" + " <tuning>" + " <cluster-controller>" + - " <min-group-up-ratio>%f</min-group-up-ratio>" + + " <groups-allowed-down-ratio>%f</groups-allowed-down-ratio>" + " </cluster-controller>" + " </tuning>" + " <engine>" + |