diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-02-14 21:51:47 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-02-14 21:51:47 +0100 |
commit | fd6a17b0ccd17317566301b4182aa454a3fe608c (patch) | |
tree | d2e0cd8ee0baf3069875d43c24dd5bd28cf7280f /config-model | |
parent | b0ab8b2c6a278a343ed6f08af6072e4fa526150a (diff) |
Control max pending move operations by feature flag.
Diffstat (limited to 'config-model')
3 files changed, 26 insertions, 0 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 af1afb32d29..d0e8afa5616 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 @@ -41,6 +41,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea private String sequencerType = "LATENCY"; private String responseSequencerType = "ADAPTIVE"; private int responseNumThreads = 2; + private int maxPendingMoveOps = 10; private Optional<EndpointCertificateSecrets> endpointCertificateSecrets = Optional.empty(); private AthenzDomain athenzDomain; private ApplicationRoles applicationRoles; @@ -78,6 +79,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea @Override public Optional<ApplicationRoles> applicationRoles() { return Optional.ofNullable(applicationRoles); } @Override public String responseSequencerType() { return responseSequencerType; } @Override public int defaultNumResponseThreads() { return responseNumThreads; } + @Override public int maxPendingMoveOps() { return maxPendingMoveOps; } @Override public boolean skipCommunicationManagerThread() { return false; } @Override public boolean skipMbusRequestThread() { return false; } @Override public boolean skipMbusReplyThread() { return false; } @@ -119,6 +121,10 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea responseNumThreads = numThreads; return this; } + public TestProperties setMaxPendingMoveOps(int moveOps) { + maxPendingMoveOps = moveOps; + return this; + } public TestProperties setDefaultTermwiseLimit(double limit) { defaultTermwiseLimit = limit; return this; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java index b081b165f5b..43f0f0f450d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java @@ -63,6 +63,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> private final Map<StorageGroup, NodeSpec> groupToSpecMap = new LinkedHashMap<>(); private Optional<ResourceLimits> resourceLimits = Optional.empty(); private final ProtonConfig.Indexing.Optimize.Enum feedSequencerType; + private final int maxPendingMoveOps; private final double defaultFeedConcurrency; private final boolean useBucketExecutorForLidSpaceCompact; private final boolean useBucketExecutorForBucketMove; @@ -204,6 +205,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> this.globallyDistributedDocuments = globallyDistributedDocuments; this.flushOnShutdown = flushOnShutdown; this.combined = combined; + maxPendingMoveOps = featureFlags.maxPendingMoveOps(); feedSequencerType = convertFeedSequencerType(featureFlags.feedSequencerType()); defaultFeedConcurrency = featureFlags.feedConcurrency(); useBucketExecutorForLidSpaceCompact = featureFlags.useBucketExecutorForLidSpaceCompact(); @@ -430,6 +432,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster> } else { builder.indexing.optimize(feedSequencerType); } + builder.maintenancejobs.maxoutstandingmoveops(maxPendingMoveOps); builder.lidspacecompaction.usebucketexecutor(useBucketExecutorForLidSpaceCompact); builder.bucketmove.usebucketexecutor(useBucketExecutorForBucketMove); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java index 336cfb2d757..3a3dde0cf87 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java @@ -846,6 +846,23 @@ public class ContentBuilderTest extends DomBuilderTest { assertEquals(flag, config.bucketmove().usebucketexecutor()); } + private void verifyThatFeatureFlagControlsMaxpendingMoveOps(int moveOps) { + DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().setMaxPendingMoveOps(moveOps)); + VespaModel model = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder() + .withServices(singleNodeContentXml()) + .withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION) + .build()) + .create(deployStateBuilder); + ProtonConfig config = getProtonConfig(model.getContentClusters().values().iterator().next()); + assertEquals(moveOps, config.maintenancejobs().maxoutstandingmoveops()); + } + + @Test + public void verifyMaxPendingMoveOps() { + verifyThatFeatureFlagControlsMaxpendingMoveOps(13); + verifyThatFeatureFlagControlsMaxpendingMoveOps(107); + } + @Test public void verifyUseBucketExecutorForLidSpaceCompact() { verifyThatFeatureFlagControlsUseBucketExecutorForLidSpaceCompact(true); |