diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-25 13:33:09 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-25 13:33:09 +0200 |
commit | cc7153b5c502bfdfa9603182cfe6848f955075de (patch) | |
tree | 2da646cad6d24c5c4c35ef26d6ac1a1940897169 /container-search/src/test/java/com/yahoo | |
parent | 0087412bb6e46c06ba66705a11121f522f0bfc02 (diff) |
Create one Dispatcher component per search cluster
This avoids creating an excessive number of connections
to search clusters when the application (incorrectly) creates
many local provider chains to the same search cluster.
Diffstat (limited to 'container-search/src/test/java/com/yahoo')
3 files changed, 20 insertions, 12 deletions
diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java index f35d77de01a..6970093fc9d 100644 --- a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java @@ -3,6 +3,7 @@ package com.yahoo.prelude.cluster; import com.yahoo.cloud.config.ClusterInfoConfig; import com.yahoo.component.ComponentId; +import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.container.QrConfig; import com.yahoo.container.QrSearchersConfig; import com.yahoo.container.handler.ClustersStatus; @@ -19,6 +20,7 @@ import com.yahoo.prelude.fastsearch.test.MockMetric; import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.search.config.ClusterConfig; +import com.yahoo.search.dispatch.Dispatcher; import com.yahoo.search.result.Hit; import com.yahoo.search.searchchain.Execution; import com.yahoo.vespa.config.search.DispatchConfig; @@ -492,8 +494,7 @@ public class ClusterSearcherTestCase { } private static ClusterSearcher createSearcher(String clusterName, Double maxQueryTimeout, Double maxQueryCacheTimeout, - boolean streamingMode, VipStatus vipStatus) - { + boolean streamingMode, VipStatus vipStatus) { QrSearchersConfig.Builder qrSearchersConfig = new QrSearchersConfig.Builder(); QrSearchersConfig.Searchcluster.Builder searchClusterConfig = new QrSearchersConfig.Searchcluster.Builder(); searchClusterConfig.name(clusterName); @@ -512,13 +513,19 @@ public class ClusterSearcherTestCase { DocumentdbInfoConfig.Builder documentDbConfig = new DocumentdbInfoConfig.Builder(); documentDbConfig.documentdb(new DocumentdbInfoConfig.Documentdb.Builder().name("type1")); + Dispatcher dispatcher = new Dispatcher(new ComponentId("test-id"), + new DispatchConfig.Builder().build(), + createClusterInfoConfig(), + vipStatus, + new MockMetric()); + ComponentRegistry<Dispatcher> dispatchers = new ComponentRegistry<>(); + dispatchers.register(new ComponentId("dispatcher." + clusterName), dispatcher); + return new ClusterSearcher(new ComponentId("test-id"), qrSearchersConfig.build(), clusterConfig.build(), documentDbConfig.build(), - new DispatchConfig.Builder().build(), - createClusterInfoConfig(), - new MockMetric(), + dispatchers, new FS4ResourcePool(new QrConfig.Builder().build()), vipStatus); } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java index 4fbbd9dd936..d1e04b26c15 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/MockDispatcher.java @@ -12,6 +12,7 @@ import com.yahoo.vespa.config.search.DispatchConfig; import java.util.List; class MockDispatcher extends Dispatcher { + public static MockDispatcher create(List<Node> nodes) { var rpcResourcePool = new RpcResourcePool(toDispatchConfig(nodes)); @@ -30,7 +31,7 @@ class MockDispatcher extends Dispatcher { } private MockDispatcher(SearchCluster searchCluster, DispatchConfig dispatchConfig, RpcInvokerFactory invokerFactory) { - super(searchCluster, dispatchConfig, invokerFactory, invokerFactory, new MockMetric()); + super(searchCluster, dispatchConfig, invokerFactory, new MockMetric()); } private static DispatchConfig toDispatchConfig(List<Node> nodes) { @@ -46,4 +47,5 @@ class MockDispatcher extends Dispatcher { } return new DispatchConfig(dispatchConfigBuilder); } + } diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java index 3d544f5c114..30f6c5a495d 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java @@ -38,14 +38,12 @@ public class DispatcherTest { @Test public void requireDispatcherToIgnoreMultilevelConfigurations() { - SearchCluster cl = new MockSearchCluster("1", 2, 2); - DispatchConfig.Builder builder = new DispatchConfig.Builder(); - builder.useMultilevelDispatch(true); - DispatchConfig dc = new DispatchConfig(builder); + SearchCluster searchCluster = new MockSearchCluster("1", 2, 2); + DispatchConfig dispatchConfig = new DispatchConfig.Builder().useMultilevelDispatch(true).build(); - var invokerFactory = new MockInvokerFactory(cl); + var invokerFactory = new MockInvokerFactory(searchCluster); - Dispatcher disp = new Dispatcher(cl, dc, invokerFactory, invokerFactory, new MockMetric()); + Dispatcher disp = new Dispatcher(searchCluster, dispatchConfig, invokerFactory, invokerFactory, new MockMetric()); assertThat(disp.getSearchInvoker(query(), null).isPresent(), is(false)); } @@ -113,6 +111,7 @@ public class DispatcherTest { } private static class MockInvokerFactory extends InvokerFactory implements PingFactory { + private final FactoryStep[] events; private int step = 0; |