summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-04-20 13:39:55 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-04-20 13:39:55 +0000
commitaee4a323fd1d02470179d903d133431587ae3971 (patch)
tree300a329b12ac287bae36835724d1c718ea9845a4 /config-model
parent901237f0a48223b8971c56c95e0d7b41e3974d33 (diff)
Add config and feature flag for the number of distributor stripes.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java27
3 files changed, 38 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 1402f728c73..3722876a53f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -61,6 +61,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private int maxActivationInhibitedOutOfSyncGroups = 0;
private List<TenantSecretStore> tenantSecretStores = Collections.emptyList();
private String jvmOmitStackTraceInFastThrowOption;
+ private int numDistributorStripes = 0;
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -102,6 +103,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public int maxActivationInhibitedOutOfSyncGroups() { return maxActivationInhibitedOutOfSyncGroups; }
@Override public List<TenantSecretStore> tenantSecretStores() { return tenantSecretStores; }
@Override public String jvmOmitStackTraceInFastThrowOption(ClusterSpec.Type type) { return jvmOmitStackTraceInFastThrowOption; }
+ @Override public int numDistributorStripes() { return numDistributorStripes; }
public TestProperties setFeedConcurrency(double feedConcurrency) {
this.feedConcurrency = feedConcurrency;
@@ -248,6 +250,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties setNumDistributorStripes(int value) {
+ this.numDistributorStripes = value;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
private final String hostName;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
index 0e3fee5a749..390c939c4b4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
@@ -43,6 +43,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
private final boolean hasIndexedDocumentType;
private final boolean useThreePhaseUpdates;
private final int maxActivationInhibitedOutOfSyncGroups;
+ private final int numDistributorStripes;
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilder<DistributorCluster> {
@@ -105,18 +106,20 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
final boolean hasIndexedDocumentType = clusterContainsIndexedDocumentType(documentsNode);
boolean useThreePhaseUpdates = deployState.getProperties().featureFlags().useThreePhaseUpdates();
int maxInhibitedGroups = deployState.getProperties().featureFlags().maxActivationInhibitedOutOfSyncGroups();
+ int numDistributorStripes = deployState.getProperties().featureFlags().numDistributorStripes();
return new DistributorCluster(parent,
new BucketSplitting.Builder().build(new ModelElement(producerSpec)), gc,
hasIndexedDocumentType, useThreePhaseUpdates,
- maxInhibitedGroups);
+ maxInhibitedGroups, numDistributorStripes);
}
}
private DistributorCluster(ContentCluster parent, BucketSplitting bucketSplitting,
GcOptions gc, boolean hasIndexedDocumentType,
boolean useThreePhaseUpdates,
- int maxActivationInhibitedOutOfSyncGroups)
+ int maxActivationInhibitedOutOfSyncGroups,
+ int numDistributorStripes)
{
super(parent, "distributor");
this.parent = parent;
@@ -125,6 +128,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
this.hasIndexedDocumentType = hasIndexedDocumentType;
this.useThreePhaseUpdates = useThreePhaseUpdates;
this.maxActivationInhibitedOutOfSyncGroups = maxActivationInhibitedOutOfSyncGroups;
+ this.numDistributorStripes = numDistributorStripes;
}
@Override
@@ -138,6 +142,7 @@ public class DistributorCluster extends AbstractConfigProducer<Distributor> impl
builder.disable_bucket_activation(hasIndexedDocumentType == false);
builder.enable_metadata_only_fetch_phase_for_inconsistent_updates(useThreePhaseUpdates);
builder.max_activation_inhibited_out_of_sync_groups(maxActivationInhibitedOutOfSyncGroups);
+ builder.num_distributor_stripes(numDistributorStripes);
bucketSplitting.getConfig(builder);
}
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 811e789752e..677eccfde78 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
@@ -1041,14 +1041,19 @@ public class ContentClusterTest extends ContentBaseTest {
assertZookeeperServerImplementation("com.yahoo.vespa.zookeeper.VespaZooKeeperAdminImpl");
}
- private int resolveMaxInhibitedGroupsConfigWithFeatureFlag(int maxGroups) {
- VespaModel model = createEnd2EndOneNode(new TestProperties().maxActivationInhibitedOutOfSyncGroups(maxGroups));
+ private StorDistributormanagerConfig resolveStorDistributormanagerConfig(TestProperties props) {
+ VespaModel model = createEnd2EndOneNode(props);
ContentCluster cc = model.getContentClusters().get("storage");
var builder = new StorDistributormanagerConfig.Builder();
cc.getDistributorNodes().getConfig(builder);
- return (new StorDistributormanagerConfig(builder)).max_activation_inhibited_out_of_sync_groups();
+ return (new StorDistributormanagerConfig(builder));
+ }
+
+ private int resolveMaxInhibitedGroupsConfigWithFeatureFlag(int maxGroups) {
+ var cfg = resolveStorDistributormanagerConfig(new TestProperties().maxActivationInhibitedOutOfSyncGroups(maxGroups));
+ return cfg.max_activation_inhibited_out_of_sync_groups();
}
@Test
@@ -1057,6 +1062,22 @@ public class ContentClusterTest extends ContentBaseTest {
assertEquals(2, resolveMaxInhibitedGroupsConfigWithFeatureFlag(2));
}
+ private int resolveNumDistributorStripesConfigWithFeatureFlag(TestProperties props) {
+ var cfg = resolveStorDistributormanagerConfig(props);
+ return cfg.num_distributor_stripes();
+ }
+
+ private int resolveNumDistributorStripesConfigWithFeatureFlag(int numStripes) {
+ return resolveNumDistributorStripesConfigWithFeatureFlag(new TestProperties().setNumDistributorStripes(numStripes));
+ }
+
+ @Test
+ public void num_distributor_stripes_config_controlled_by_properties() {
+ assertEquals(0, resolveNumDistributorStripesConfigWithFeatureFlag(new TestProperties()));
+ assertEquals(0, resolveNumDistributorStripesConfigWithFeatureFlag(0));
+ assertEquals(1, resolveNumDistributorStripesConfigWithFeatureFlag(1));
+ }
+
@Test
public void testDedicatedClusterControllers() {
VespaModel noContentModel = createEnd2EndOneNode(new TestProperties().setHostedVespa(true)