From 1d87f637c7db8b4bb143cd00e6df2acad5aa22ed Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 3 Jul 2020 13:10:04 +0000 Subject: Only the distributor need help encoding. Proton has enough workers. --- .../com/yahoo/vespa/model/content/Distributor.java | 8 +++++++ .../com/yahoo/vespa/model/content/StorageNode.java | 7 ++++++ .../yahoo/vespa/model/content/DistributorTest.java | 25 +++++++++++---------- .../vespa/model/content/StorageClusterTest.java | 26 +++++++++++++++------- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java index c55548cfd2b..4b07b78a713 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Distributor.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.content; import com.yahoo.config.model.deploy.DeployState; +import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.model.builder.xml.dom.ModelElement; @@ -49,6 +50,13 @@ public class Distributor extends ContentNode { provider.getConfig(builder); } + @Override + public void getConfig(StorCommunicationmanagerConfig.Builder builder) { + super.getConfig(builder); + // Single distributor needs help to encode the messages. + builder.mbus.dispatch_on_encode(true); + } + @Override public String getStartupCommand() { return "exec sbin/vespa-distributord -c $VESPA_CONFIG_ID"; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java index f41188eccde..d40abec5bb1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageNode.java @@ -5,6 +5,7 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.provision.Flavor; import com.yahoo.vespa.config.content.StorFilestorConfig; import com.yahoo.vespa.config.content.core.StorBucketmoverConfig; +import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig; import com.yahoo.vespa.config.content.core.StorServerConfig; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.vespa.defaults.Defaults; @@ -92,4 +93,10 @@ public class StorageNode extends ContentNode implements StorServerConfig.Produce cluster.getConfig(builder); } + @Override + public void getConfig(StorCommunicationmanagerConfig.Builder builder) { + super.getConfig(builder); + builder.mbus.dispatch_on_encode(false); + } + } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java index 365dc74274d..1c05b7e8fff 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java @@ -14,8 +14,8 @@ import org.junit.Test; import java.util.List; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; /** * Test for content DistributorCluster. @@ -48,7 +48,7 @@ public class DistributorTest { getConfig(builder); StorServerConfig config = new StorServerConfig(builder); - assertEquals(true, config.is_distributor()); + assertTrue(config.is_distributor()); assertEquals("foofighters", config.cluster_name()); } @@ -62,7 +62,7 @@ public class DistributorTest { " " + "").getConfig(builder); StorDistributormanagerConfig conf = new StorDistributormanagerConfig(builder); - assertEquals(false, conf.enable_revert()); + assertFalse(conf.enable_revert()); } @Test @@ -85,7 +85,7 @@ public class DistributorTest { assertEquals(26214400, conf.splitsize()); assertEquals(13107200, conf.joinsize()); assertEquals(8, conf.minsplitcount()); - assertEquals(false, conf.inlinebucketsplitting()); + assertFalse(conf.inlinebucketsplitting()); } @Test @@ -110,7 +110,7 @@ public class DistributorTest { assertEquals(33544432, conf.splitsize()); assertEquals(16000000, conf.joinsize()); assertEquals(8, conf.minsplitcount()); - assertEquals(true, conf.inlinebucketsplitting()); + assertTrue(conf.inlinebucketsplitting()); cluster = parseCluster("\n" + " 2" + @@ -137,7 +137,7 @@ public class DistributorTest { assertEquals(33544432, conf.splitsize()); assertEquals(16000000, conf.joinsize()); assertEquals(1, conf.minsplitcount()); - assertEquals(true, conf.inlinebucketsplitting()); + assertTrue(conf.inlinebucketsplitting()); } @Test @@ -269,6 +269,7 @@ public class DistributorTest { cluster.getChildren().get("0").getConfig(builder); StorCommunicationmanagerConfig config = new StorCommunicationmanagerConfig(builder); + assertTrue(config.mbus().dispatch_on_encode()); assertEquals(14066, config.rpcport()); } @@ -288,14 +289,14 @@ public class DistributorTest { public void bucket_activation_disabled_if_no_documents_in_indexed_mode() { StorDistributormanagerConfig config = clusterXmlToConfig( generateXmlForDocTypes(DocType.storeOnly("music"))); - assertThat(config.disable_bucket_activation(), is(true)); + assertTrue(config.disable_bucket_activation()); } @Test public void bucket_activation_enabled_with_single_indexed_document() { StorDistributormanagerConfig config = clusterXmlToConfig( generateXmlForDocTypes(DocType.index("music"))); - assertThat(config.disable_bucket_activation(), is(false)); + assertFalse(config.disable_bucket_activation()); } @Test @@ -303,7 +304,7 @@ public class DistributorTest { StorDistributormanagerConfig config = clusterXmlToConfig( generateXmlForDocTypes(DocType.index("music"), DocType.index("movies"))); - assertThat(config.disable_bucket_activation(), is(false)); + assertFalse(config.disable_bucket_activation()); } @Test @@ -312,14 +313,14 @@ public class DistributorTest { generateXmlForDocTypes(DocType.storeOnly("music"), DocType.streaming("bunnies"), DocType.index("movies"))); - assertThat(config.disable_bucket_activation(), is(false)); + assertFalse(config.disable_bucket_activation()); } @Test public void bucket_activation_disabled_for_single_streaming_type() { StorDistributormanagerConfig config = clusterXmlToConfig( generateXmlForDocTypes(DocType.streaming("music"))); - assertThat(config.disable_bucket_activation(), is(true)); + assertTrue(config.disable_bucket_activation()); } } 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 96fe7fc5775..9bbc7cecf06 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 @@ -8,6 +8,7 @@ import com.yahoo.config.model.provision.SingleNodeProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.provision.Flavor; import com.yahoo.config.provisioning.FlavorsConfig; +import com.yahoo.vespa.config.content.core.StorCommunicationmanagerConfig; import com.yahoo.vespa.config.content.core.StorIntegritycheckerConfig; import com.yahoo.vespa.config.content.core.StorVisitorConfig; import com.yahoo.vespa.config.content.StorFilestorConfig; @@ -62,18 +63,27 @@ public class StorageClusterTest { } @Test - public void testBasics() { - StorServerConfig.Builder builder = new StorServerConfig.Builder(); - parse("\n" + + public void testBasics() throws Exception { + StorageCluster storage = parse("\n" + " " + " " + " " + - "\n"). - getConfig(builder); + "\n"); - StorServerConfig config = new StorServerConfig(builder); - assertEquals(false, config.is_distributor()); - assertEquals("foofighters", config.cluster_name()); + assertEquals(1, storage.getChildren().size()); + { + StorServerConfig.Builder builder = new StorServerConfig.Builder(); + storage.getConfig(builder); + StorServerConfig config = new StorServerConfig(builder); + assertEquals(false, config.is_distributor()); + assertEquals("foofighters", config.cluster_name()); + } + { + StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder(); + storage.getChildren().get("0").getConfig(builder); + StorCommunicationmanagerConfig config = new StorCommunicationmanagerConfig(builder); + assertFalse(config.mbus().dispatch_on_encode()); + } } @Test -- cgit v1.2.3 From 275dfef0f2c9b9f2acfbefeb759c34d76c973e43 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 3 Jul 2020 15:09:29 +0000 Subject: Separate testting of communicationmanager config --- .../yahoo/vespa/model/content/DistributorTest.java | 19 +++++++++ .../vespa/model/content/StorageClusterTest.java | 47 ++++++++++------------ 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java index 1c05b7e8fff..8ea846cc790 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/DistributorTest.java @@ -273,6 +273,25 @@ public class DistributorTest { assertEquals(14066, config.rpcport()); } + @Test + public void testCommunicationManagerDefaults() { + StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder(); + DistributorCluster cluster = + parse("" + + " " + + " " + + " " + + " " + + ""); + + cluster.getChildren().get("0").getConfig(builder); + StorCommunicationmanagerConfig config = new StorCommunicationmanagerConfig(builder); + assertTrue(config.mbus().dispatch_on_encode()); + assertFalse(config.mbus().dispatch_on_decode()); + assertEquals(4, config.mbus().num_threads()); + assertEquals(StorCommunicationmanagerConfig.Mbus.Optimize_for.LATENCY, config.mbus().optimize_for()); + } + private StorDistributormanagerConfig clusterXmlToConfig(String xml) { StorDistributormanagerConfig.Builder builder = new StorDistributormanagerConfig.Builder(); parse(xml).getConfig(builder); 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 9bbc7cecf06..1ac33c4a7e5 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 @@ -1,9 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.content; -import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; -import com.yahoo.config.model.deploy.TestProperties; import com.yahoo.config.model.provision.SingleNodeProvisioner; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.provision.Flavor; @@ -37,14 +35,6 @@ public class StorageClusterTest { return parse(xml, root); } - StorageCluster parse(String xml, Flavor flavor, ModelContext.Properties properties) { - MockRoot root = new MockRoot("", new DeployState.Builder() - .applicationPackage(new MockApplicationPackage.Builder().build()) - .modelHostProvisioner(new SingleNodeProvisioner(flavor)) - .properties(properties).build()); - return parse(xml, root); - } - StorageCluster parse(String xml) { MockRoot root = new MockRoot(); return parse(xml, root); @@ -63,7 +53,7 @@ public class StorageClusterTest { } @Test - public void testBasics() throws Exception { + public void testBasics() { StorageCluster storage = parse("\n" + " " + " " + @@ -71,19 +61,26 @@ public class StorageClusterTest { "\n"); assertEquals(1, storage.getChildren().size()); - { - StorServerConfig.Builder builder = new StorServerConfig.Builder(); - storage.getConfig(builder); - StorServerConfig config = new StorServerConfig(builder); - assertEquals(false, config.is_distributor()); - assertEquals("foofighters", config.cluster_name()); - } - { - StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder(); - storage.getChildren().get("0").getConfig(builder); - StorCommunicationmanagerConfig config = new StorCommunicationmanagerConfig(builder); - assertFalse(config.mbus().dispatch_on_encode()); - } + StorServerConfig.Builder builder = new StorServerConfig.Builder(); + storage.getConfig(builder); + StorServerConfig config = new StorServerConfig(builder); + assertFalse(config.is_distributor()); + assertEquals("foofighters", config.cluster_name()); + } + @Test + public void testCommunicationManagerDefaults() { + StorageCluster storage = parse("\n" + + " " + + " " + + " " + + "\n"); + StorCommunicationmanagerConfig.Builder builder = new StorCommunicationmanagerConfig.Builder(); + storage.getChildren().get("0").getConfig(builder); + StorCommunicationmanagerConfig config = new StorCommunicationmanagerConfig(builder); + assertFalse(config.mbus().dispatch_on_encode()); + assertFalse(config.mbus().dispatch_on_decode()); + assertEquals(4, config.mbus().num_threads()); + assertEquals(StorCommunicationmanagerConfig.Mbus.Optimize_for.LATENCY, config.mbus().optimize_for()); } @Test @@ -107,7 +104,7 @@ public class StorageClusterTest { } @Test - public void testVisitors() throws Exception { + public void testVisitors() { StorVisitorConfig.Builder builder = new StorVisitorConfig.Builder(); parse( "\n" + -- cgit v1.2.3