diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-02-14 17:13:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-14 17:13:30 +0100 |
commit | 4e366945d3ca4eb9cb4682770682efb5dade3c13 (patch) | |
tree | 183d0d5c65be5d4d73a480e72da0f6683823855f /config-model | |
parent | 4037f6a6c61e9dfc90b1a1abef68ea2e88212b9b (diff) |
Revert "Revert "Create a resourcepool so that we do not need to reconnect to content …""
Diffstat (limited to 'config-model')
3 files changed, 54 insertions, 18 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java index e19d81e7fb2..77916921fe4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java @@ -59,6 +59,7 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains> for (AbstractSearchCluster searchCluster : searchClusters) { if ( ! ( searchCluster instanceof IndexedSearchCluster)) continue; owningCluster.addComponent(new DispatcherComponent((IndexedSearchCluster)searchCluster)); + owningCluster.addComponent(new RpcResourcePoolComponent((IndexedSearchCluster)searchCluster)); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java new file mode 100644 index 00000000000..0291da611e8 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/RpcResourcePoolComponent.java @@ -0,0 +1,31 @@ +// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.model.container.search; + +import com.yahoo.osgi.provider.model.ComponentModel; +import com.yahoo.vespa.config.search.DispatchConfig; +import com.yahoo.vespa.model.container.component.Component; +import com.yahoo.vespa.model.container.xml.BundleMapper; +import com.yahoo.vespa.model.search.IndexedSearchCluster; + +public class RpcResourcePoolComponent extends Component<RpcResourcePoolComponent, ComponentModel> + implements DispatchConfig.Producer { + private final IndexedSearchCluster indexedSearchCluster; + + public RpcResourcePoolComponent(IndexedSearchCluster indexedSearchCluster) { + super(toComponentModel(indexedSearchCluster)); + this.indexedSearchCluster = indexedSearchCluster; + } + + @Override + public void getConfig(DispatchConfig.Builder builder) { + indexedSearchCluster.getConfig(builder); + } + + private static ComponentModel toComponentModel(IndexedSearchCluster indexedSearchCluster) { + String componentId = "rpcresourcepool." + indexedSearchCluster.getClusterName(); // used by Dispatcher + return new ComponentModel(componentId, + "com.yahoo.search.dispatch.rpc.RpcResourcePool", + BundleMapper.searchAndDocprocBundle, + null); + } +} diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java index 1c4e005cb67..c5bf5153369 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchClusterTest.java @@ -18,7 +18,6 @@ import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.search.AbstractSearchCluster; -import com.yahoo.vespa.model.search.SearchCluster; import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils; import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg; import org.junit.Test; @@ -160,23 +159,28 @@ public class SearchClusterTest { AbstractSearchCluster searchCluster2 = model.getSearchClusters().get(xbulkIndex); assertEquals("xbulk", searchCluster2.getClusterName()); - Component<?,?> normalDispatcher = (Component<?, ?>)containerCluster1.getComponentsMap().get(new ComponentId("dispatcher.normal")); - assertNotNull(normalDispatcher); - assertEquals("dispatcher.normal", normalDispatcher.getComponentId().stringValue()); - assertEquals("com.yahoo.search.dispatch.Dispatcher", normalDispatcher.getClassId().stringValue()); - assertEquals("j1/component/dispatcher.normal", normalDispatcher.getConfigId()); - DispatchConfig.Builder normalDispatchConfigBuilder = new DispatchConfig.Builder(); - model.getConfig(normalDispatchConfigBuilder, "j1/component/dispatcher.normal"); - assertEquals("node2host", normalDispatchConfigBuilder.build().node(0).host()); - - Component<?,?> xbulkDispatcher = (Component<?, ?>)containerCluster1.getComponentsMap().get(new ComponentId("dispatcher.xbulk")); - assertNotNull(xbulkDispatcher); - assertEquals("dispatcher.xbulk", xbulkDispatcher.getComponentId().stringValue()); - assertEquals("com.yahoo.search.dispatch.Dispatcher", xbulkDispatcher.getClassId().stringValue()); - assertEquals("j1/component/dispatcher.xbulk", xbulkDispatcher.getConfigId()); - DispatchConfig.Builder xbulkDispatchConfigBuilder = new DispatchConfig.Builder(); - model.getConfig(xbulkDispatchConfigBuilder, "j1/component/dispatcher.xbulk"); - assertEquals("node0host", xbulkDispatchConfigBuilder.build().node(0).host()); + verifyDispatch(model, containerCluster1, "normal", "node2host"); + verifyDispatch(model, containerCluster1, "xbulk", "node0host"); + } + + private void verifyDispatch(VespaModel model, ContainerCluster containerCluster, String cluster, String host) { + Component<?,?> dispatcher = (Component<?, ?>)containerCluster.getComponentsMap().get(new ComponentId("dispatcher." + cluster)); + assertNotNull(dispatcher); + assertEquals("dispatcher." + cluster, dispatcher.getComponentId().stringValue()); + assertEquals("com.yahoo.search.dispatch.Dispatcher", dispatcher.getClassId().stringValue()); + assertEquals("j1/component/dispatcher." + cluster, dispatcher.getConfigId()); + DispatchConfig.Builder dispatchConfigBuilder = new DispatchConfig.Builder(); + model.getConfig(dispatchConfigBuilder, "j1/component/dispatcher." + cluster); + assertEquals(host, dispatchConfigBuilder.build().node(0).host()); + + Component<?,?> rpcResourcePool = (Component<?, ?>)containerCluster.getComponentsMap().get(new ComponentId("rpcresourcepool." + cluster)); + assertNotNull(dispatcher); + assertEquals("rpcresourcepool." + cluster, rpcResourcePool.getComponentId().stringValue()); + assertEquals("com.yahoo.search.dispatch.rpc.RpcResourcePool", rpcResourcePool.getClassId().stringValue()); + assertEquals("j1/component/rpcresourcepool."+cluster, rpcResourcePool.getConfigId()); + DispatchConfig.Builder rpcResourcePoolDispatchConfigBuilder = new DispatchConfig.Builder(); + model.getConfig(rpcResourcePoolDispatchConfigBuilder, "j1/component/rpcresourcepool." + cluster); + assertEquals(host, rpcResourcePoolDispatchConfigBuilder.build().node(0).host()); } } |