summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-23 22:46:33 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-01-23 22:46:33 +0000
commitc2f9154beb850b7cbadcd3f974e4869db7953f1d (patch)
treed497076856672b306436f51c8bffc8ef21635dec /config-model
parentf25dbc75d2b98d01e61c4d4387005629483fdc1e (diff)
Control which lidspace job implementation to use.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java8
-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.java38
3 files changed, 39 insertions, 10 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 9e8e9656e90..92d425a9d4e 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
@@ -26,7 +26,6 @@ import java.util.Set;
*
* @author hakonhall
*/
-@SuppressWarnings("deprecation")
public class TestProperties implements ModelContext.Properties, ModelContext.FeatureFlags {
private boolean multitenant = false;
@@ -53,6 +52,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private double feedConcurrency = 0.5;
private boolean enableAutomaticReindexing = false;
private boolean reconfigurableZookeeperServer = false;
+ private boolean useBucketExecutorForLidSpaceCompact;
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -87,6 +87,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public double feedConcurrency() { return feedConcurrency; }
@Override public boolean enableAutomaticReindexing() { return enableAutomaticReindexing; }
@Override public boolean reconfigurableZookeeperServer() { return reconfigurableZookeeperServer; }
+ @Override public boolean useBucketExecutorForLidSpaceCompact() { return useBucketExecutorForLidSpaceCompact; }
public TestProperties setFeedConcurrency(double feedConcurrency) {
this.feedConcurrency = feedConcurrency;
@@ -195,6 +196,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties useBucketExecutorForLidSpaceCompact(boolean enabled) {
+ useBucketExecutorForLidSpaceCompact = enabled;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
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 79b98837238..dd29df61f35 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
@@ -65,6 +65,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
private Optional<ResourceLimits> resourceLimits = Optional.empty();
private final ProtonConfig.Indexing.Optimize.Enum feedSequencerType;
private final double defaultFeedConcurrency;
+ private final boolean useBucketExecutorForLidSpaceCompact;
/** Whether the nodes of this cluster also hosts a container cluster in a hosted system */
private final boolean combined;
@@ -205,6 +206,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
this.combined = combined;
feedSequencerType = convertFeedSequencerType(featureFlags.feedSequencerType());
defaultFeedConcurrency = featureFlags.feedConcurrency();
+ useBucketExecutorForLidSpaceCompact = featureFlags.useBucketExecutorForLidSpaceCompact();
}
public void setVisibilityDelay(double delay) {
@@ -425,6 +427,7 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
} else {
builder.indexing.optimize(feedSequencerType);
}
+ builder.lidspacecompaction.usebucketexecutor(useBucketExecutorForLidSpaceCompact);
}
private boolean isGloballyDistributed(NewDocumentType docType) {
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 00b3fc22956..55234a3a96e 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
@@ -719,6 +719,17 @@ public class ContentBuilderTest extends DomBuilderTest {
assertThat(config.search().mmap().options(0), is(ProtonConfig.Search.Mmap.Options.POPULATE));
}
+ private String singleNodeContentXml() {
+ return "<services>" +
+ "<content version='1.0' id='search'>" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='music' mode='index'/>" +
+ " </documents>" +
+ " <nodes count='1'/>" +
+ "</content>" +
+ "</services>";
+ }
@Test
public void ensurePruneRemovedDocumentsAgeForHostedVespa() {
{
@@ -738,15 +749,7 @@ public class ContentBuilderTest extends DomBuilderTest {
}
{
- String hostedXml = "<services>" +
- "<content version='1.0' id='search'>" +
- " <redundancy>1</redundancy>" +
- " <documents>" +
- " <document type='music' mode='index'/>" +
- " </documents>" +
- " <nodes count='1'/>" +
- "</content>" +
- "</services>";
+ String hostedXml = singleNodeContentXml();
DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().setHostedVespa(true));
VespaModel model = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
@@ -821,6 +824,23 @@ public class ContentBuilderTest extends DomBuilderTest {
verifyThatFeatureFlagControlsVisibilityDelayDefault(0.6, 0.6);
}
+ private void verifyThatFeatureFlagControlsUseBucketExecutorForLidSpaceCompact(boolean flag) {
+ DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().useBucketExecutorForLidSpaceCompact(flag));
+ 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(flag, config.lidspacecompaction().usebucketexecutor());
+ }
+
+ @Test
+ public void verifyUseBucketExecutorForLidSpaceCompact() {
+ verifyThatFeatureFlagControlsUseBucketExecutorForLidSpaceCompact(true);
+ verifyThatFeatureFlagControlsUseBucketExecutorForLidSpaceCompact(false);
+ }
+
@Test
public void failWhenNoDocumentsElementSpecified() {
expectedException.expect(IllegalArgumentException.class);