diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-20 12:06:30 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-20 12:06:30 +0200 |
commit | f0475fac6d3c95212b88768b971ebc035d0c3d46 (patch) | |
tree | d34e0445ca7d9288cd1bf2d499231aea0f435f78 /container-search | |
parent | 0419474326ad85730a8f8d02caa7e027474ed018 (diff) |
Take streaming search up and also add unit test for it.
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java | 16 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java | 37 |
2 files changed, 32 insertions, 21 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java index b0d9c2b0002..37d8e316302 100644 --- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java @@ -86,8 +86,6 @@ public class ClusterSearcher extends Searcher { VipStatus vipStatus) { super(id); - Dispatcher dispatcher = Dispatcher.create(id.stringValue(), dispatchConfig, clusterInfoConfig.nodeCount(), vipStatus, metric); - int searchClusterIndex = clusterConfig.clusterId(); clusterModelName = clusterConfig.clusterName(); QrSearchersConfig.Searchcluster searchClusterConfig = getSearchClusterConfigFromClusterName(qrsConfig, clusterModelName); @@ -98,8 +96,7 @@ public class ClusterSearcher extends Searcher { .setLogRaw(false).setLogMean(true)); maxQueryTimeout = ParameterParser.asMilliSeconds(clusterConfig.maxQueryTimeout(), DEFAULT_MAX_QUERY_TIMEOUT); - maxQueryCacheTimeout = ParameterParser.asMilliSeconds(clusterConfig.maxQueryCacheTimeout(), - DEFAULT_MAX_QUERY_CACHE_TIMEOUT); + maxQueryCacheTimeout = ParameterParser.asMilliSeconds(clusterConfig.maxQueryCacheTimeout(), DEFAULT_MAX_QUERY_CACHE_TIMEOUT); SummaryParameters docSumParams = new SummaryParameters(qrsConfig .com().yahoo().prelude().fastsearch().FastSearcher().docsum() @@ -115,12 +112,12 @@ public class ClusterSearcher extends Searcher { } if (searchClusterConfig.indexingmode() == STREAMING) { - VdsStreamingSearcher searcher = vdsCluster(fs4ResourcePool.getServerId(), - searchClusterIndex, - searchClusterConfig, docSumParams, - documentDbConfig); + VdsStreamingSearcher searcher = vdsCluster(fs4ResourcePool.getServerId(), searchClusterIndex, + searchClusterConfig, docSumParams, documentDbConfig); addBackendSearcher(searcher); + vipStatus.addToRotation(searcher.getName()); } else { + Dispatcher dispatcher = Dispatcher.create(id.stringValue(), dispatchConfig, clusterInfoConfig.nodeCount(), vipStatus, metric); for (int dispatcherIndex = 0; dispatcherIndex < searchClusterConfig.dispatcher().size(); dispatcherIndex++) { try { if ( ! isRemote(searchClusterConfig.dispatcher(dispatcherIndex).host())) { @@ -129,13 +126,12 @@ public class ClusterSearcher extends Searcher { addBackendSearcher(searcher); } } catch (UnknownHostException e) { - e.printStackTrace(); throw new RuntimeException(e); } } } if ( server == null ) { - throw new IllegalStateException("ClusterSearcher should have a top level dispatch."); + throw new IllegalStateException("ClusterSearcher should have backend."); } } 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 9ea7276583b..3e6e88c72c1 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 @@ -5,6 +5,7 @@ import com.yahoo.cloud.config.ClusterInfoConfig; import com.yahoo.component.ComponentId; import com.yahoo.container.QrConfig; import com.yahoo.container.QrSearchersConfig; +import com.yahoo.container.handler.ClustersStatus; import com.yahoo.container.handler.VipStatus; import com.yahoo.container.protect.Error; import com.yahoo.prelude.IndexFacts; @@ -264,8 +265,7 @@ public class ClusterSearcherTestCase { Set<String> documentTypes = new LinkedHashSet<>(docTypesList); ClusterSearcher cluster = new ClusterSearcher(documentTypes); try { - cluster.addBackendSearcher(new MyMockSearcher( - expectAttributePrefetch)); + cluster.addBackendSearcher(new MyMockSearcher(expectAttributePrefetch)); cluster.setValidRankProfile("default", documentTypes); cluster.addValidRankProfile("testprofile", "type1"); return new Execution(cluster, Execution.Context.createContextStub()); @@ -513,19 +513,23 @@ public class ClusterSearcherTestCase { assertEquals(3, result.getTotalHitCount()); } - private static ClusterSearcher createSearcher(Double maxQueryTimeout, - Double maxQueryCacheTimeout) { + private static ClusterSearcher createSearcher(String clusterName, Double maxQueryTimeout, Double maxQueryCacheTimeout, + boolean streamingMode, VipStatus vipStatus) + { QrSearchersConfig.Builder qrSearchersConfig = new QrSearchersConfig.Builder(); - QrSearchersConfig.Searchcluster.Builder searchClusterConfig = - new QrSearchersConfig.Searchcluster.Builder().name("test-cluster"); + QrSearchersConfig.Searchcluster.Builder searchClusterConfig = new QrSearchersConfig.Searchcluster.Builder(); + searchClusterConfig.name(clusterName); + if (streamingMode) { + searchClusterConfig.indexingmode(QrSearchersConfig.Searchcluster.Indexingmode.Enum.STREAMING); + searchClusterConfig.searchdef("streaming_sd"); + } qrSearchersConfig.searchcluster(searchClusterConfig); - QrSearchersConfig.Searchcluster.Dispatcher.Builder dispatcherConfig = - new QrSearchersConfig.Searchcluster.Dispatcher.Builder(); + QrSearchersConfig.Searchcluster.Dispatcher.Builder dispatcherConfig = new QrSearchersConfig.Searchcluster.Dispatcher.Builder(); dispatcherConfig.host("localhost"); dispatcherConfig.port(0); searchClusterConfig.dispatcher(dispatcherConfig); - ClusterConfig.Builder clusterConfig = new ClusterConfig.Builder().clusterName("test-cluster"); + ClusterConfig.Builder clusterConfig = new ClusterConfig.Builder().clusterName(clusterName); if (maxQueryTimeout != null) clusterConfig.maxQueryTimeout(maxQueryTimeout); if (maxQueryCacheTimeout != null) @@ -543,7 +547,7 @@ public class ClusterSearcherTestCase { Statistics.nullImplementation, new MockMetric(), new FS4ResourcePool(new QrConfig.Builder().build()), - new VipStatus()); + vipStatus); } private static ClusterInfoConfig createClusterInfoConfig() { @@ -558,7 +562,9 @@ public class ClusterSearcherTestCase { Execution exec; Query query; QueryTimeoutFixture(Double maxQueryTimeout, Double maxQueryCacheTimeout) { - searcher = createSearcher(maxQueryTimeout, maxQueryCacheTimeout); + String clusterName = "test-cluster"; + VipStatus vipStatus = new VipStatus(new QrSearchersConfig.Builder().searchcluster(new QrSearchersConfig.Searchcluster.Builder().name(clusterName)).build(), new ClustersStatus()); + searcher = createSearcher(clusterName, maxQueryTimeout, maxQueryCacheTimeout, false, vipStatus); exec = new Execution(searcher, Execution.Context.createContextStub()); query = new Query("?query=hello&restrict=type1"); } @@ -568,6 +574,15 @@ public class ClusterSearcherTestCase { } @Test + public void testThatVipStatusIsSetUpForStreamingSearch() { + String clusterName = "test-cluster"; + VipStatus vipStatus = new VipStatus(new QrSearchersConfig.Builder().searchcluster(new QrSearchersConfig.Searchcluster.Builder().name(clusterName)).build(), new ClustersStatus()); + assertFalse(vipStatus.isInRotation()); + ClusterSearcher searcher = createSearcher(clusterName, 1.0, 10.0, true, vipStatus); + assertTrue(vipStatus.isInRotation()); + } + + @Test public void testThatQueryTimeoutIsCappedWithDefaultMax() { QueryTimeoutFixture f = new QueryTimeoutFixture(null, null); f.query.setTimeout(600001); |