diff options
Diffstat (limited to 'config-model')
3 files changed, 38 insertions, 27 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 7a09a36c1d7..b7506587102 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 @@ -70,6 +70,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea private int maxUnCommittedMemory = 123456; private double diskBloatFactor = 0.2; private boolean distributorEnhancedMaintenanceScheduling = false; + private boolean asyncApplyBucketDiff = false; @Override public ModelContext.FeatureFlags featureFlags() { return this; } @Override public boolean multitenant() { return multitenant; } @@ -120,6 +121,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea @Override public int docstoreCompressionLevel() { return docstoreCompressionLevel; } @Override public boolean distributorEnhancedMaintenanceScheduling() { return distributorEnhancedMaintenanceScheduling; } @Override public int maxUnCommittedMemory() { return maxUnCommittedMemory; } + @Override public boolean asyncApplyBucketDiff() { return asyncApplyBucketDiff; } public TestProperties maxUnCommittedMemory(int maxUnCommittedMemory) { this.maxUnCommittedMemory = maxUnCommittedMemory; @@ -307,6 +309,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea return this; } + public TestProperties setAsyncApplyBucketDiff(boolean value) { + asyncApplyBucketDiff = value; + return this; + } + public static class Spec implements ConfigServerSpec { private final String hostName; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java index 5c692e8ef6b..d7f6fb6c581 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/FileStorProducer.java @@ -47,6 +47,7 @@ public class FileStorProducer implements StorFilestorConfig.Producer { private final int reponseNumThreads; private final StorFilestorConfig.Response_sequencer_type.Enum responseSequencerType; private final boolean useAsyncMessageHandlingOnSchedule; + private final boolean asyncApplyBucketDiff; private static StorFilestorConfig.Response_sequencer_type.Enum convertResponseSequencerType(String sequencerType) { try { @@ -62,6 +63,7 @@ public class FileStorProducer implements StorFilestorConfig.Producer { this.reponseNumThreads = featureFlags.defaultNumResponseThreads(); this.responseSequencerType = convertResponseSequencerType(featureFlags.responseSequencerType()); useAsyncMessageHandlingOnSchedule = featureFlags.useAsyncMessageHandlingOnSchedule(); + asyncApplyBucketDiff = featureFlags.asyncApplyBucketDiff(); } @Override @@ -73,6 +75,7 @@ public class FileStorProducer implements StorFilestorConfig.Producer { builder.num_response_threads(reponseNumThreads); builder.response_sequencer_type(responseSequencerType); builder.use_async_message_handling_on_schedule(useAsyncMessageHandlingOnSchedule); + builder.async_apply_bucket_diff(asyncApplyBucketDiff); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java index 9d8d7509966..739f8b7fff2 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageClusterTest.java @@ -142,6 +142,16 @@ public class StorageClusterTest { return new StorServerConfig(builder); } + private StorFilestorConfig filestorConfigFromProducer(StorFilestorConfig.Producer producer) { + var builder = new StorFilestorConfig.Builder(); + producer.getConfig(builder); + return new StorFilestorConfig(builder); + } + + private StorFilestorConfig filestorConfigFromProperties(TestProperties properties) { + return filestorConfigFromProducer(parse(cluster("foo", ""), properties)); + } + @Test public void testMergeFeatureFlags() { var config = configFromProperties(new TestProperties().setMaxMergeQueueSize(1919).setMaxConcurrentMergesPerNode(37)); @@ -159,6 +169,15 @@ public class StorageClusterTest { } @Test + public void async_apply_bucket_diff_can_be_controlled_by_feature_flag() { + var config = filestorConfigFromProperties(new TestProperties()); + assertFalse(config.async_apply_bucket_diff()); + + config = filestorConfigFromProperties(new TestProperties().setAsyncApplyBucketDiff(true)); + assertTrue(config.async_apply_bucket_diff()); + } + + @Test public void testVisitors() { StorVisitorConfig.Builder builder = new StorVisitorConfig.Builder(); parse(cluster("bees", @@ -188,9 +207,7 @@ public class StorageClusterTest { ); { - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - stc.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(stc); assertEquals(7, config.num_threads()); assertFalse(config.enable_multibit_split_optimalization()); @@ -199,9 +216,7 @@ public class StorageClusterTest { { assertEquals(1, stc.getChildren().size()); StorageNode sn = stc.getChildren().values().iterator().next(); - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - sn.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(sn); assertEquals(7, config.num_threads()); } } @@ -215,9 +230,7 @@ public class StorageClusterTest { "</tuning>")), new Flavor(new FlavorsConfig.Flavor.Builder().name("test-flavor").minCpuCores(9).build()) ); - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - stc.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(stc); assertEquals(2, config.num_response_threads()); assertEquals(StorFilestorConfig.Response_sequencer_type.ADAPTIVE, config.response_sequencer_type()); assertEquals(7, config.num_threads()); @@ -238,9 +251,7 @@ public class StorageClusterTest { ); { - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - stc.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(stc); assertEquals(4, config.num_threads()); assertFalse(config.enable_multibit_split_optimalization()); @@ -248,9 +259,7 @@ public class StorageClusterTest { { assertEquals(1, stc.getChildren().size()); StorageNode sn = stc.getChildren().values().iterator().next(); - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - sn.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(sn); assertEquals(4, config.num_threads()); } } @@ -262,17 +271,13 @@ public class StorageClusterTest { ); { - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - stc.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(stc); assertEquals(8, config.num_threads()); } { assertEquals(1, stc.getChildren().size()); StorageNode sn = stc.getChildren().values().iterator().next(); - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - sn.getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(sn); assertEquals(9, config.num_threads()); } } @@ -285,17 +290,13 @@ public class StorageClusterTest { @Test public void testFeatureFlagControlOfResponseSequencer() { - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - simpleCluster(new TestProperties().setResponseNumThreads(13).setResponseSequencerType("THROUGHPUT")).getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(simpleCluster(new TestProperties().setResponseNumThreads(13).setResponseSequencerType("THROUGHPUT"))); assertEquals(13, config.num_response_threads()); assertEquals(StorFilestorConfig.Response_sequencer_type.THROUGHPUT, config.response_sequencer_type()); } private void verifyAsyncMessageHandlingOnSchedule(boolean expected, boolean value) { - StorFilestorConfig.Builder builder = new StorFilestorConfig.Builder(); - simpleCluster(new TestProperties().setAsyncMessageHandlingOnSchedule(value)).getConfig(builder); - StorFilestorConfig config = new StorFilestorConfig(builder); + var config = filestorConfigFromProducer(simpleCluster(new TestProperties().setAsyncMessageHandlingOnSchedule(value))); assertEquals(expected, config.use_async_message_handling_on_schedule()); } @Test |