summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-02-14 21:51:47 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2021-02-14 21:51:47 +0100
commitfd6a17b0ccd17317566301b4182aa454a3fe608c (patch)
treed2e0cd8ee0baf3069875d43c24dd5bd28cf7280f /config-model
parentb0ab8b2c6a278a343ed6f08af6072e4fa526150a (diff)
Control max pending move operations by feature flag.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java17
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);