diff options
author | Harald Musum <musum@yahooinc.com> | 2022-09-05 13:17:55 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-09-05 13:17:55 +0200 |
commit | 5a120fb3c2bf05416b39b8e214757c7b82dca32b (patch) | |
tree | 34f448ac341516147a0cfb68b3464999816457a9 | |
parent | 8efe91bfb05d060d38ae0cf75faa2d07756492d9 (diff) |
Use feature flag CLUSTER_CONTROLLER_STATE_GATHER_COUNT
7 files changed, 28 insertions, 15 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index 7973ed93db2..268ca07cdb5 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -131,6 +131,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"tokle"}) default boolean enableProxyProtocolMixedMode() { return true; } @ModelFeatureFlag(owners = {"arnej"}) default String logFileCompressionAlgorithm(String defVal) { return defVal; } @ModelFeatureFlag(owners = {"vekterli"}) default boolean useTwoPhaseDocumentGc() { return false; } + @ModelFeatureFlag(owners = {"hmusum"}) default int clusterControllerStateGatherCount() { return 2; } } /** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */ 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 57f01fd8f55..ad816b4b109 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 @@ -154,7 +154,6 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea @Override public boolean useTwoPhaseDocumentGc() { return useTwoPhaseDocumentGc; } @Override public String phraseOptimization() { return phraseOptimization; } - public TestProperties sharedStringRepoNoReclaim(boolean sharedStringRepoNoReclaim) { this.sharedStringRepoNoReclaim = sharedStringRepoNoReclaim; return this; 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 f0b32f9140d..642b182f0b7 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 @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.content; +import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.config.content.FleetcontrollerConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; @@ -22,11 +23,13 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr private final String clusterName; private final ModelElement clusterElement; private final ResourceLimits resourceLimits; + private final int clusterControllerStateGatherCount; - public Builder(String clusterName, ModelElement clusterElement, ResourceLimits resourceLimits) { + public Builder(String clusterName, ModelElement clusterElement, ResourceLimits resourceLimits, ModelContext.FeatureFlags featureFlags) { this.clusterName = clusterName; this.clusterElement = clusterElement; this.resourceLimits = resourceLimits; + this.clusterControllerStateGatherCount = featureFlags.clusterControllerStateGatherCount(); } @Override @@ -52,13 +55,15 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr tuning.childAsDouble("min-storage-up-ratio"), bucketSplittingMinimumBits, minNodeRatioPerGroup, - resourceLimits); + resourceLimits, + clusterControllerStateGatherCount); } else { return new ClusterControllerConfig(ancestor, clusterName, null, null, null, null, null, null, bucketSplittingMinimumBits, minNodeRatioPerGroup, - resourceLimits); + resourceLimits, + clusterControllerStateGatherCount); } } } @@ -73,9 +78,10 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr private final Integer minSplitBits; private final Double minNodeRatioPerGroup; private final ResourceLimits resourceLimits; + private final int clusterControllerStateGatherCount; // TODO refactor; too many args - private ClusterControllerConfig(AbstractConfigProducer parent, + private ClusterControllerConfig(AbstractConfigProducer<?> parent, String clusterName, Duration initProgressTime, Duration transitionTime, @@ -85,7 +91,8 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr Double minStorageUpRatio, Integer minSplitBits, Double minNodeRatioPerGroup, - ResourceLimits resourceLimits) { + ResourceLimits resourceLimits, + int clusterControllerStateGatherCount) { super(parent, "fleetcontroller"); this.clusterName = clusterName; @@ -98,6 +105,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr this.minSplitBits = minSplitBits; this.minNodeRatioPerGroup = minNodeRatioPerGroup; this.resourceLimits = resourceLimits; + this.clusterControllerStateGatherCount = clusterControllerStateGatherCount; } @Override @@ -140,6 +148,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer<ClusterContr builder.min_node_ratio_per_group(minNodeRatioPerGroup); } resourceLimits.getConfig(builder); + builder.state_gather_count(clusterControllerStateGatherCount); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java index bf5770681ef..e777999cfbe 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java @@ -127,7 +127,8 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce .build(contentElement); c.clusterControllerConfig = new ClusterControllerConfig.Builder(clusterId, contentElement, - resourceLimits.getClusterControllerLimits()) + resourceLimits.getClusterControllerLimits(), + deployState.featureFlags()) .build(deployState, c, contentElement.getXml()); c.search = new ContentSearchCluster.Builder(documentDefinitions, globallyDistributedDocuments, diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java index 83672b6452e..a08023f2e10 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java @@ -24,7 +24,6 @@ import org.junit.jupiter.api.Test; import java.time.Instant; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java index 1e6847a47be..b449d5403b5 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java @@ -27,7 +27,8 @@ public class FleetControllerClusterTest { new ClusterResourceLimits.Builder(false, featureFlags.resourceLimitDisk(), featureFlags.resourceLimitMemory()) - .build(clusterElement).getClusterControllerLimits()) + .build(clusterElement).getClusterControllerLimits(), + new TestProperties().featureFlags()) .build(root.getDeployState(), root, clusterElement.getXml()); } diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java index 48450716131..683244e5e2f 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java @@ -217,12 +217,13 @@ public class ModelContextImpl implements ModelContext { private final boolean mbus_dispatch_on_encode; private final int mbus_threads; private final int mbus_network_threads; - private int mbus_java_num_targets; - private int mbus_java_events_before_wakeup; - private int mbus_cpp_num_targets; - private int mbus_cpp_events_before_wakeup; - private int rpc_num_targets; - private int rpc_events_before_wakeup; + private final int mbus_java_num_targets; + private final int mbus_java_events_before_wakeup; + private final int mbus_cpp_num_targets; + private final int mbus_cpp_events_before_wakeup; + private final int rpc_num_targets; + private final int rpc_events_before_wakeup; + private final int clusterControllerStateGatherCount; public FeatureFlags(FlagSource source, ApplicationId appId, Version version) { this.defaultTermwiseLimit = flagValue(source, appId, version, Flags.DEFAULT_TERM_WISE_LIMIT); @@ -282,6 +283,7 @@ public class ModelContextImpl implements ModelContext { this.rpc_events_before_wakeup = flagValue(source, appId, version, Flags.RPC_EVENTS_BEFORE_WAKEUP); this.queryDispatchPolicy = flagValue(source, appId, version, Flags.QUERY_DISPATCH_POLICY); this.phraseOptimization = flagValue(source, appId, version, Flags.PHRASE_OPTIMIZATION); + this.clusterControllerStateGatherCount = flagValue(source, appId, version, Flags.CLUSTER_CONTROLLER_STATE_GATHER_COUNT); } @Override public String queryDispatchPolicy() { return queryDispatchPolicy; } @@ -349,6 +351,7 @@ public class ModelContextImpl implements ModelContext { return defVal; } @Override public boolean useTwoPhaseDocumentGc() { return useTwoPhaseDocumentGc; } + @Override public int clusterControllerStateGatherCount() { return clusterControllerStateGatherCount; } private static <V> V flagValue(FlagSource source, ApplicationId appId, Version vespaVersion, UnboundFlag<? extends V, ?, ?> flag) { return flag.bindTo(source) |