diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-23 22:46:33 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-23 22:46:33 +0000 |
commit | c2f9154beb850b7cbadcd3f974e4869db7953f1d (patch) | |
tree | d497076856672b306436f51c8bffc8ef21635dec /config-model | |
parent | f25dbc75d2b98d01e61c4d4387005629483fdc1e (diff) |
Control which lidspace job implementation to use.
Diffstat (limited to 'config-model')
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); |