summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-08 15:25:10 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-03-08 15:25:10 +0100
commiteadc775a626fd2604545a6b9a2b77784ca60ba15 (patch)
tree9807f085e26d663abadcebda56ed76ded1d72759 /container-search
parent2852c75009353bed9c0456f6dd0c5c1f7d96df39 (diff)
- Do not use Searcher interface below the prelude cluster searcher.
- It is not necessary and provides no value. - It also hides some important aspects, like the schema. - And it simplifies testing.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java64
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java17
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java18
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java2
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingSearcher.java10
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingVisitor.java4
-rw-r--r--container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java63
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java19
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/DispatcherTest.java9
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java32
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/RpcSearchInvokerTest.java5
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingVisitorTest.java12
19 files changed, 121 insertions, 163 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 f481d58d334..1fe0835306e 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
@@ -29,9 +29,11 @@ import com.yahoo.yolean.Exceptions;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
@@ -177,7 +179,7 @@ public class ClusterSearcher extends Searcher {
public Result search(Query query, Execution execution) {
validateQueryTimeout(query);
validateQueryCache(query);
- Searcher searcher = server;
+ var searcher = server;
if (searcher == null) {
return new Result(query, ErrorMessage.createNoBackendsInService("Could not search"));
}
@@ -185,17 +187,17 @@ public class ClusterSearcher extends Searcher {
return new Result(query, ErrorMessage.createTimeout("No time left for searching"));
}
- return doSearch(searcher, query, execution);
+ return doSearch(searcher, query);
}
@Override
public void fill(com.yahoo.search.Result result, String summaryClass, Execution execution) {
Query query = result.getQuery();
- Searcher searcher = server;
+ VespaBackEndSearcher searcher = server;
if (searcher != null) {
if (query.getTimeLeft() > 0) {
- searcher.fill(result, summaryClass, execution);
+ searcher.fill(result, summaryClass);
} else {
if (result.hits().getErrorHit() == null) {
result.hits().addError(ErrorMessage.createTimeout("No time left to get summaries, query timeout was " +
@@ -230,22 +232,21 @@ public class ClusterSearcher extends Searcher {
query.getRanking().setQueryCache(false);
}
- private Result doSearch(Searcher searcher, Query query, Execution execution) {
+ private Result doSearch(VespaBackEndSearcher searcher, Query query) {
if (schemas.size() > 1) {
- return searchMultipleDocumentTypes(searcher, query, execution);
+ return searchMultipleDocumentTypes(searcher, query);
} else {
- String docType = schemas.iterator().next();
- query.getModel().setRestrict(docType);
- return perSchemaSearch(searcher, query, execution);
+ String schema = schemas.iterator().next();
+ query.getModel().setRestrict(schema);
+ return perSchemaSearch(searcher, schema, query);
}
}
- private Result perSchemaSearch(Searcher searcher, Query query, Execution execution) {
+ private Result perSchemaSearch(VespaBackEndSearcher searcher, String schema, Query query) {
Set<String> restrict = query.getModel().getRestrict();
if (restrict.size() != 1) {
throw new IllegalStateException("perSchemaSearch must always be called with 1 schema, got: " + restrict.size());
}
- String schema = restrict.iterator().next();
int rerankCount = globalPhaseRanker != null ? globalPhaseRanker.getRerankCount(query, schema) : 0;
boolean useGlobalPhase = rerankCount > 0;
final int wantOffset = query.getOffset();
@@ -257,7 +258,7 @@ public class ClusterSearcher extends Searcher {
query.setOffset(0);
query.setHits(useHits);
}
- Result result = searcher.search(query, execution);
+ Result result = searcher.search(schema, query);
if (useGlobalPhase) {
globalPhaseRanker.rerankHits(query, result, schema);
result.hits().trim(wantOffset, wantHits);
@@ -284,16 +285,17 @@ public class ClusterSearcher extends Searcher {
}
}
- private Result searchMultipleDocumentTypes(Searcher searcher, Query query, Execution execution) {
+ private Result searchMultipleDocumentTypes(VespaBackEndSearcher searcher, Query query) {
Set<String> schemas = resolveSchemas(query);
- List<Query> queries = createQueries(query, schemas);
- if (queries.size() == 1) {
- return perSchemaSearch(searcher, queries.get(0), execution);
+ Map<String, Query> schemaQueries = createQueries(query, schemas);
+ if (schemaQueries.size() == 1) {
+ var entry = schemaQueries.entrySet().iterator().next();
+ return perSchemaSearch(searcher, entry.getKey(), entry.getValue());
} else {
Result mergedResult = new Result(query);
- List<FutureTask<Result>> pending = new ArrayList<>(queries.size());
- for (Query q : queries) {
- FutureTask<Result> task = new FutureTask<>(() -> perSchemaSearch(searcher, q, execution));
+ List<FutureTask<Result>> pending = new ArrayList<>(schemaQueries.size());
+ for (var entry : schemaQueries.entrySet()) {
+ FutureTask<Result> task = new FutureTask<>(() -> perSchemaSearch(searcher, entry.getKey(), entry.getValue()));
try {
executor.execute(task);
pending.add(task);
@@ -309,7 +311,7 @@ public class ClusterSearcher extends Searcher {
if (query.getOffset() > 0 || query.getHits() < mergedResult.hits().size()) {
if (mergedResult.getHitOrderer() != null) {
// Make sure we have the necessary data for sorting
- searcher.fill(mergedResult, VespaBackEndSearcher.SORTABLE_ATTRIBUTES_SUMMARY_CLASS, execution);
+ searcher.fill(mergedResult, VespaBackEndSearcher.SORTABLE_ATTRIBUTES_SUMMARY_CLASS);
}
mergedResult.hits().trim(query.getOffset(), query.getHits());
query.setOffset(0); // Needed when doing a trim
@@ -351,22 +353,24 @@ public class ClusterSearcher extends Searcher {
return retval;
}
- private List<Query> createQueries(Query query, Set<String> docTypes) {
+ private Map<String, Query> createQueries(Query query, Set<String> schemas) {
query.getModel().getQueryTree(); // performance: parse query before cloning such that it is only done once
- List<Query> retval = new ArrayList<>(docTypes.size());
- if (docTypes.size() == 1) {
- query.getModel().setRestrict(docTypes.iterator().next());
- retval.add(query);
- } else if ( ! docTypes.isEmpty() ) {
- for (String docType : docTypes) {
+ if (schemas.size() == 1) {
+ String schema = schemas.iterator().next();
+ query.getModel().setRestrict(schema);
+ return Map.of(schema, query);
+ } else if ( ! schemas.isEmpty() ) {
+ var schemaQueries = new HashMap<String, Query>();
+ for (String schema : schemas) {
Query q = query.clone();
q.setOffset(0);
q.setHits(query.getOffset() + query.getHits());
- q.getModel().setRestrict(docType);
- retval.add(q);
+ q.getModel().setRestrict(schema);
+ schemaQueries.put(schema, q);
}
+ return schemaQueries;
}
- return retval;
+ return Map.of();
}
@Override
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
index ddb36e007d3..85b7770a8b2 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
@@ -1,8 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch;
-import com.yahoo.prelude.Ping;
-import com.yahoo.prelude.Pong;
import com.yahoo.prelude.querytransform.QueryRewrite;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
@@ -16,7 +14,6 @@ import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
import com.yahoo.search.schema.SchemaInfo;
-import com.yahoo.search.searchchain.Execution;
import java.io.IOException;
import java.util.Optional;
@@ -61,14 +58,6 @@ public class FastSearcher extends VespaBackEndSearcher {
this.dispatcher = dispatcher;
}
- /**
- * Pings the backend. Does not propagate to other searchers.
- */
- @Override
- public Pong ping(Ping ping, Execution execution) {
- throw new IllegalStateException("This ping should not have been called.");
- }
-
@Override
protected void transformQuery(Query query) {
QueryRewrite.rewriteSddocname(query);
@@ -83,11 +72,11 @@ public class FastSearcher extends VespaBackEndSearcher {
}
@Override
- public Result doSearch2(Query query, Execution execution) {
+ public Result doSearch2(String schema, Query query) {
if (dispatcher.allGroupsHaveSize1())
forceSinglePassGrouping(query);
try (SearchInvoker invoker = getSearchInvoker(query)) {
- Result result = invoker.search(query, execution);
+ Result result = invoker.search(query);
injectSource(result.hits());
if (query.properties().getBoolean(Ranking.RANKFEATURES, false)) {
@@ -97,7 +86,7 @@ public class FastSearcher extends VespaBackEndSearcher {
// contain the data we need. If we fetch the default
// one we end up fetching docsums twice unless the
// user also requested the default one.
- fill(result, query.getPresentation().getSummary(), execution); // ARGH
+ fill(result, query.getPresentation().getSummary()); // ARGH
}
return result;
} catch (TimeoutException e) {
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
index 2e635d21f01..340262ed186 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java
@@ -12,13 +12,11 @@ import com.yahoo.prelude.querytransform.QueryRewrite;
import com.yahoo.protect.Validator;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
-import com.yahoo.search.cluster.PingableSearcher;
import com.yahoo.search.schema.RankProfile;
import com.yahoo.search.grouping.vespa.GroupingExecutor;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.schema.SchemaInfo;
-import com.yahoo.search.searchchain.Execution;
import com.yahoo.searchlib.aggregation.Grouping;
import java.util.ArrayList;
@@ -27,14 +25,13 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.logging.Logger;
/**
* Superclass for backend searchers.
*
* @author baldersheim
*/
-public abstract class VespaBackEndSearcher extends PingableSearcher {
+public abstract class VespaBackEndSearcher {
/** for vespa-internal use only; consider renaming the summary class */
public static final String SORTABLE_ATTRIBUTES_SUMMARY_CLASS = "attributeprefetch";
@@ -62,16 +59,13 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
/** Sets default document summary class. Default is null */
private void setDefaultDocsumClass(String docsumClass) { defaultDocsumClass = docsumClass; }
- public final Logger getLogger() { return super.getLogger(); }
-
/**
* Searches a search cluster
* This is an endpoint - searchers will never propagate the search to any nested searcher.
*
* @param query the query to search
- * @param execution the query execution context
*/
- protected abstract Result doSearch2(Query query, Execution execution);
+ protected abstract Result doSearch2(String schema, Query query);
protected abstract void doPartialFill(Result result, String summaryClass);
@@ -154,8 +148,7 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
protected void transformQuery(Query query) { }
- @Override
- public Result search(Query query, Execution execution) {
+ public Result search(String schema, Query query) {
// query root should not be null here
Item root = query.getModel().getQueryTree().getRoot();
if (root == null || root instanceof NullItem) {
@@ -183,7 +176,7 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
if (root == null || root instanceof NullItem) // root can become null after resolving and transformation?
return new Result(query);
- Result result = doSearch2(query, execution);
+ Result result = doSearch2(schema, query);
if (query.getTrace().getLevel() >= 1)
query.trace(getName() + " dispatch response: " + result, false, 1);
@@ -217,8 +210,7 @@ public abstract class VespaBackEndSearcher extends PingableSearcher {
return parts;
}
- @Override
- public void fill(Result result, String summaryClass, Execution execution) {
+ public void fill(Result result, String summaryClass) {
if (result.isFilled(summaryClass)) return; // TODO: Checked in the superclass - remove
List<Result> parts = partitionHits(result, summaryClass);
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
index be8524bedd2..a246589ec7e 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/InterleavedSearchInvoker.java
@@ -111,9 +111,9 @@ public class InterleavedSearchInvoker extends SearchInvoker implements ResponseM
}
@Override
- protected InvokerResult getSearchResult(Execution execution) throws IOException {
+ protected InvokerResult getSearchResult() throws IOException {
InvokerResult result = new InvokerResult(query, query.getHits());
- List<LeanHit> merged = Collections.emptyList();
+ List<LeanHit> merged = List.of();
long nextTimeout = query.getTimeLeft();
var groupingResultAggregator = new GroupingResultAggregator();
try {
@@ -124,7 +124,7 @@ public class InterleavedSearchInvoker extends SearchInvoker implements ResponseM
coverageAggregator.getAnsweredNodes() + " responses received");
break;
} else {
- InvokerResult toMerge = invoker.getSearchResult(execution);
+ InvokerResult toMerge = invoker.getSearchResult();
merged = mergeResult(result.getResult(), toMerge, merged, groupingResultAggregator);
ejectInvoker(invoker);
}
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
index b494b5b3819..74da2388155 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchErrorInvoker.java
@@ -35,7 +35,7 @@ public class SearchErrorInvoker extends SearchInvoker {
}
@Override
- protected Object sendSearchRequest(Query query, Object context) throws IOException {
+ protected Object sendSearchRequest(Query query, Object context) {
this.query = query;
if (monitor != null) {
monitor.responseAvailable(this);
@@ -44,7 +44,7 @@ public class SearchErrorInvoker extends SearchInvoker {
}
@Override
- protected InvokerResult getSearchResult(Execution execution) throws IOException {
+ protected InvokerResult getSearchResult() {
Result res = new Result(query, message);
if (coverage != null) {
res.setCoverage(coverage);
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
index ad332494179..4ad89674b7b 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchInvoker.java
@@ -31,9 +31,9 @@ public abstract class SearchInvoker extends CloseableInvoker {
* nodes, the provided {@link Execution} may be used to retrieve document summaries required
* for correct result windowing.
*/
- public Result search(Query query, Execution execution) throws IOException {
+ public Result search(Query query) throws IOException {
sendSearchRequest(query, null);
- InvokerResult result = getSearchResult(execution);
+ InvokerResult result = getSearchResult();
setFinalStatus(result.getResult().hits().getError() == null);
result.complete();
return result.getResult();
@@ -48,7 +48,7 @@ public abstract class SearchInvoker extends CloseableInvoker {
*/
protected abstract Object sendSearchRequest(Query query, Object context) throws IOException;
- protected abstract InvokerResult getSearchResult(Execution execution) throws IOException;
+ protected abstract InvokerResult getSearchResult() throws IOException;
protected void setMonitor(ResponseMonitor<SearchInvoker> monitor) {
this.monitor = monitor;
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
index e34e5c97bc4..93e09a04180 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcSearchInvoker.java
@@ -86,7 +86,7 @@ public class RpcSearchInvoker extends SearchInvoker implements Client.ResponseRe
}
@Override
- protected InvokerResult getSearchResult(Execution execution) throws IOException {
+ protected InvokerResult getSearchResult() throws IOException {
long timeLeftMs = query.getTimeLeft();
if (timeLeftMs <= 0) {
return errorResult(query, ErrorMessage.createTimeout("Timeout while waiting for " + getName()));
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingSearcher.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingSearcher.java
index 180fdc389d8..2f3b48b5683 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingSearcher.java
@@ -126,7 +126,7 @@ public class StreamingSearcher extends VespaBackEndSearcher {
}
@Override
- public Result doSearch2(Query query, Execution execution) {
+ public Result doSearch2(String schema, Query query) {
if (query.getTimeLeft() <= 0)
return new Result(query, ErrorMessage.createTimeout(String.format("No time left for searching (timeout=%d)", query.getTimeout())));
@@ -135,8 +135,6 @@ public class StreamingSearcher extends VespaBackEndSearcher {
return new Result(query, ErrorMessage.createIllegalQuery("Streaming search requires either " +
"streaming.groupname or streaming.selection"));
}
- // Cluster searcher guarantees that there will be one, and only one schema here
- String schema = query.getModel().getRestrict().iterator().next();
if (query.getTrace().isTraceable(4))
query.trace("Routing to search cluster " + getSearchClusterName() + " and document type " + schema, 4);
@@ -264,7 +262,7 @@ public class StreamingSearcher extends VespaBackEndSearcher {
lazyTrace(query, 8, "Returning result ", result);
if (skippedHits > 0) {
- getLogger().info("skipping " + skippedHits + " hits for query: " + result.getQuery());
+ log.info("skipping " + skippedHits + " hits for query: " + result.getQuery());
result.hits().addError(ErrorMessage.createTimeout("Missing hit summary data for " + skippedHits + " hits"));
}
@@ -366,8 +364,8 @@ public class StreamingSearcher extends VespaBackEndSearcher {
}
@Override
- public Visitor createVisitor(Query query, String searchCluster, Route route, String documentType, int traceLevelOverride) {
- return new StreamingVisitor(query, searchCluster, route, documentType, this, traceLevelOverride);
+ public Visitor createVisitor(Query query, String searchCluster, Route route, String schema, int traceLevelOverride) {
+ return new StreamingVisitor(query, searchCluster, route, schema, this, traceLevelOverride);
}
}
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingVisitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingVisitor.java
index cd9b64da90b..e638e0cf12a 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingVisitor.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/StreamingVisitor.java
@@ -77,13 +77,13 @@ class StreamingVisitor extends VisitorDataHandler implements Visitor {
}
public StreamingVisitor(Query query, String searchCluster, Route route,
- String documentType, VisitorSessionFactory visitorSessionFactory,
+ String schema, VisitorSessionFactory visitorSessionFactory,
int traceLevelOverride)
{
this.query = query;
this.visitorSessionFactory = visitorSessionFactory;
this.traceLevelOverride = traceLevelOverride;
- setVisitorParameters(searchCluster, route, documentType);
+ setVisitorParameters(searchCluster, route, schema);
}
private int inferSessionTraceLevel(Query query) {
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
index 10387065128..e33bbd206be 100644
--- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
+++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VisitorFactory.java
@@ -11,6 +11,6 @@ import com.yahoo.search.Query;
*/
interface VisitorFactory {
- Visitor createVisitor(Query query, String searchCluster, Route route, String documentType, int traceLevelOverride);
+ Visitor createVisitor(Query query, String searchCluster, Route route, String schema, int traceLevelOverride);
}
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 8d4e3364ce4..affa6161440 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
@@ -206,12 +206,12 @@ public class ClusterSearcherTestCase {
}
@Override
- protected com.yahoo.search.Result doSearch2(Query query, Execution execution) {
+ protected com.yahoo.search.Result doSearch2(String schema, Query query) {
return null; // search() is overriden, this should never be called
}
@Override
- public com.yahoo.search.Result search(Query query, Execution execution) {
+ public com.yahoo.search.Result search(String schema, Query query) {
com.yahoo.search.Result result = new com.yahoo.search.Result(query);
List<Hit> hits = getHits(query);
if (hits != null) {
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
index 20d2a304c3c..8270700a66b 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
@@ -1,7 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.fastsearch.test;
-import com.yahoo.component.chain.Chain;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.handler.VipStatus;
import com.yahoo.container.protect.Error;
@@ -9,9 +8,9 @@ import com.yahoo.prelude.fastsearch.ClusterParams;
import com.yahoo.prelude.fastsearch.DocumentdbInfoConfig;
import com.yahoo.prelude.fastsearch.FastSearcher;
import com.yahoo.prelude.fastsearch.SummaryParameters;
+import com.yahoo.prelude.fastsearch.VespaBackEndSearcher;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
-import com.yahoo.search.Searcher;
import com.yahoo.search.dispatch.MockDispatcher;
import com.yahoo.search.dispatch.rpc.RpcResourcePool;
import com.yahoo.search.dispatch.searchcluster.Node;
@@ -24,10 +23,8 @@ import com.yahoo.search.schema.DocumentSummary;
import com.yahoo.search.schema.RankProfile;
import com.yahoo.search.schema.Schema;
import com.yahoo.search.schema.SchemaInfo;
-import com.yahoo.search.searchchain.Execution;
import org.junit.jupiter.api.Test;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
@@ -42,16 +39,18 @@ import static org.junit.jupiter.api.Assertions.*;
* @author bratseth
*/
public class FastSearcherTestCase {
+ private static final String SCHEMA = "test";
+ private static final String CLUSTER = "test";
@Test
void testNullQuery() {
Logger.getLogger(FastSearcher.class.getName()).setLevel(Level.ALL);
FastSearcher fastSearcher = new FastSearcher("container.0",
- MockDispatcher.create(Collections.emptyList()),
+ MockDispatcher.create(List.of()),
new SummaryParameters(null),
new ClusterParams("testhittype"),
- documentdbInfoConfig("test"),
- schemaInfo("test"));
+ documentdbInfoConfig(SCHEMA),
+ schemaInfo(SCHEMA));
String query = "?junkparam=ignored";
Result result = doSearch(fastSearcher, new Query(query), 0, 10);
@@ -63,30 +62,20 @@ public class FastSearcherTestCase {
assertEquals(Error.NULL_QUERY.code, message.getCode());
}
- private Chain<Searcher> chainedAsSearchChain(Searcher topOfChain) {
- List<Searcher> searchers = new ArrayList<>();
- searchers.add(topOfChain);
- return new Chain<>(searchers);
- }
-
- private Result doSearch(Searcher searcher, Query query, int offset, int hits) {
+ private Result doSearch(VespaBackEndSearcher searcher, Query query, int offset, int hits) {
query.setOffset(offset);
query.setHits(hits);
- return createExecution(searcher).search(query);
- }
-
- private Execution createExecution(Searcher searcher) {
- return new Execution(chainedAsSearchChain(searcher), Execution.Context.createContextStub());
+ return searcher.search(SCHEMA, query);
}
@Test
void testSinglePassGroupingIsForcedWithSingleNodeGroups() {
FastSearcher fastSearcher = new FastSearcher("container.0",
- MockDispatcher.create(List.of(new Node("test", 0, "host0", 0))),
+ MockDispatcher.create(List.of(new Node(CLUSTER, 0, "host0", 0))),
new SummaryParameters(null),
new ClusterParams("testhittype"),
- documentdbInfoConfig("test"),
- schemaInfo("test"));
+ documentdbInfoConfig(SCHEMA),
+ schemaInfo(SCHEMA));
Query q = new Query("?query=foo");
GroupingRequest request1 = GroupingRequest.newInstance(q);
request1.setRootOperation(new AllOperation());
@@ -98,18 +87,18 @@ public class FastSearcherTestCase {
request2.setRootOperation(all);
assertForceSinglePassIs(false, q);
- fastSearcher.search(q, new Execution(Execution.Context.createContextStub()));
+ fastSearcher.search(SCHEMA, q);
assertForceSinglePassIs(true, q);
}
@Test
void testRankProfileValidation() {
FastSearcher fastSearcher = new FastSearcher("container.0",
- MockDispatcher.create(List.of(new Node("test", 0, "host0", 0))),
+ MockDispatcher.create(List.of(new Node(CLUSTER, 0, "host0", 0))),
new SummaryParameters(null),
new ClusterParams("testhittype"),
- documentdbInfoConfig("test"),
- schemaInfo("test"));
+ documentdbInfoConfig(SCHEMA),
+ schemaInfo(SCHEMA));
assertFalse(searchError("?query=q", fastSearcher).contains("does not contain requested rank profile"));
assertFalse(searchError("?query=q&ranking.profile=default", fastSearcher).contains("does not contain requested rank profile"));
assertTrue(searchError("?query=q&ranking.profile=nosuch", fastSearcher).contains("does not contain requested rank profile"));
@@ -117,14 +106,14 @@ public class FastSearcherTestCase {
@Test
void testSummaryNeedsQuery() {
- var documentDb = new DocumentdbInfoConfig(new DocumentdbInfoConfig.Builder().documentdb(new DocumentdbInfoConfig.Documentdb.Builder().name("test")));
- var schema = new Schema.Builder("test")
+ var documentDb = new DocumentdbInfoConfig(new DocumentdbInfoConfig.Builder().documentdb(new DocumentdbInfoConfig.Documentdb.Builder().name(SCHEMA)));
+ var schema = new Schema.Builder(SCHEMA)
.add(new DocumentSummary.Builder("default").build())
.add(new RankProfile.Builder("default").setHasRankFeatures(false)
.setHasSummaryFeatures(false)
.build());
FastSearcher backend = new FastSearcher("container.0",
- MockDispatcher.create(Collections.singletonList(new Node("test", 0, "host0", 0))),
+ MockDispatcher.create(Collections.singletonList(new Node(CLUSTER, 0, "host0", 0))),
new SummaryParameters(null),
new ClusterParams("testhittype"),
documentDb,
@@ -141,14 +130,14 @@ public class FastSearcherTestCase {
@Test
void testSinglePassGroupingIsNotForcedWithSingleNodeGroups() {
- MockDispatcher dispatcher = MockDispatcher.create(List.of(new Node("test", 0, "host0", 0), new Node("test", 2, "host1", 0)));
+ MockDispatcher dispatcher = MockDispatcher.create(List.of(new Node(CLUSTER, 0, "host0", 0), new Node(CLUSTER, 2, "host1", 0)));
FastSearcher fastSearcher = new FastSearcher("container.0",
dispatcher,
new SummaryParameters(null),
new ClusterParams("testhittype"),
- documentdbInfoConfig("test"),
- schemaInfo("test"));
+ documentdbInfoConfig(SCHEMA),
+ schemaInfo(SCHEMA));
Query q = new Query("?query=foo");
GroupingRequest request1 = GroupingRequest.newInstance(q);
request1.setRootOperation(new AllOperation());
@@ -160,7 +149,7 @@ public class FastSearcherTestCase {
request2.setRootOperation(all);
assertForceSinglePassIs(false, q);
- fastSearcher.search(q, new Execution(Execution.Context.createContextStub()));
+ fastSearcher.search(SCHEMA, q);
assertForceSinglePassIs(false, q);
}
@@ -183,7 +172,7 @@ public class FastSearcherTestCase {
searchClusterB.name(clusterName);
b.searchcluster(searchClusterB);
VipStatus vipStatus = new VipStatus(b.build());
- List<Node> nodes_1 = List.of(new Node("test", 0, "host0", 0));
+ List<Node> nodes_1 = List.of(new Node(CLUSTER, 0, "host0", 0));
RpcResourcePool rpcPool_1 = new RpcResourcePool(MockDispatcher.toDispatchConfig(), MockDispatcher.toNodesConfig(nodes_1));
MockDispatcher dispatch_1 = MockDispatcher.create(nodes_1, rpcPool_1, vipStatus);
dispatch_1.clusterMonitor.shutdown();
@@ -193,12 +182,12 @@ public class FastSearcherTestCase {
assertTrue(vipStatus.isInRotation()); //Verify that deconstruct does not touch vipstatus
}
- private String searchError(String query, Searcher searcher) {
+ private String searchError(String query, VespaBackEndSearcher searcher) {
return search(query, searcher).hits().getError().getDetailedMessage();
}
- private Result search(String query, Searcher searcher) {
- return searcher.search(new Query(query), new Execution(Execution.Context.createContextStub()));
+ private Result search(String query, VespaBackEndSearcher searcher) {
+ return searcher.search(SCHEMA, new Query(query));
}
private DocumentdbInfoConfig documentdbInfoConfig(String schemaName) {
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
index 27a27e993a8..a033ccdace6 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/PartialFillTestCase.java
@@ -2,16 +2,13 @@
package com.yahoo.prelude.fastsearch.test;
import com.yahoo.component.chain.Chain;
-import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.prelude.fastsearch.FastHit;
import com.yahoo.prelude.fastsearch.VespaBackEndSearcher;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
-import com.yahoo.search.rendering.RendererRegistry;
import com.yahoo.search.result.ErrorHit;
import com.yahoo.search.result.ErrorMessage;
-import com.yahoo.search.searchchain.Execution;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
@@ -27,7 +24,7 @@ public class PartialFillTestCase {
public static class FS4 extends VespaBackEndSearcher {
public List<Result> history = new ArrayList<>();
- protected Result doSearch2(Query query, Execution execution) {
+ protected Result doSearch2(String schema, Query query) {
return new Result(query);
}
protected void doPartialFill(Result result, String summaryClass) {
@@ -36,7 +33,7 @@ public class PartialFillTestCase {
}
public static class BadFS4 extends VespaBackEndSearcher {
- protected Result doSearch2(Query query, Execution execution) {
+ protected Result doSearch2(String schema, Query query) {
return new Result(query);
}
protected void doPartialFill(Result result, String summaryClass) {
@@ -130,24 +127,18 @@ public class PartialFillTestCase {
com.yahoo.search.result.ErrorMessage error = i.next();
switch (n) {
case 0:
- assertEquals(exp_sub, error);
- break;
case 1:
assertEquals(exp_sub, error);
break;
default:
- assertTrue(false);
+ fail();
}
n++;
}
}
- private Execution createExecution(Searcher searcher) {
- return new Execution(chainedAsSearchChain(searcher), Execution.Context.createContextStub());
- }
-
- private void doFill(Searcher searcher, Result result, String summaryClass) {
- createExecution(searcher).fill(result, summaryClass);
+ private void doFill(VespaBackEndSearcher searcher, Result result, String summaryClass) {
+ searcher.fill(result, summaryClass);
}
private Chain<Searcher> chainedAsSearchChain(Searcher topOfChain) {
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 8dc74110291..23846db3f0b 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
@@ -18,7 +18,6 @@ import com.yahoo.search.dispatch.searchcluster.Pinger;
import com.yahoo.search.dispatch.searchcluster.PongHandler;
import com.yahoo.search.dispatch.searchcluster.SearchCluster;
import com.yahoo.search.dispatch.searchcluster.SearchGroups;
-import com.yahoo.search.searchchain.Execution;
import com.yahoo.vespa.config.search.DispatchConfig;
import com.yahoo.vespa.config.search.DispatchNodesConfig;
import com.yahoo.yolean.UncheckedInterruptedException;
@@ -243,7 +242,7 @@ public class DispatcherTest {
rpcPool.getConnection(node.key()).request(null, null, 0, null, null, 0);
return null;
};
- @Override protected InvokerResult getSearchResult(Execution execution) {
+ @Override protected InvokerResult getSearchResult() {
return new InvokerResult(new Result(new Query()));
}
@Override protected void release() { }
@@ -288,11 +287,11 @@ public class DispatcherTest {
// Start some searches, one against each group, since we have a round-robin policy.
SearchInvoker search0 = dispatcher.getSearchInvoker(new Query(), null);
- search0.search(new Query(), null);
+ search0.search(new Query());
// Unknown whether the first or second search hits node0, so we must track that.
int offset = nodeIdOfSearcher0.get();
SearchInvoker search1 = dispatcher.getSearchInvoker(new Query(), null);
- search1.search(new Query(), null);
+ search1.search(new Query());
// Wait for the current cluster monitor to be mid-ping-round.
doPing.set(true);
@@ -330,7 +329,7 @@ public class DispatcherTest {
// Next search should hit group0 again, this time on node2.
SearchInvoker search2 = dispatcher.getSearchInvoker(new Query(), null);
- search2.search(new Query(), null);
+ search2.search(new Query());
// Searches against nodes 1 and 2 complete.
(offset == 0 ? search0 : search1).close();
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
index fac75b1dd68..8ced7d3895e 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java
@@ -61,7 +61,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(4900, 100, 1));
expectedEvents.add(new Event(4800, 100, 2));
- invoker.search(query, null);
+ invoker.search(query);
assertTrue(expectedEvents.isEmpty(), "All test scenario events processed");
}
@@ -75,7 +75,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(4700, 300, 1));
expectedEvents.add(null);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertTrue(expectedEvents.isEmpty(), "All test scenario events processed");
assertNull(result.hits().getErrorHit(), "Result is not marked as an error");
@@ -94,7 +94,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(2400, 100, 2));
expectedEvents.add(new Event(0, 0, null));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertTrue(expectedEvents.isEmpty(), "All test scenario events processed");
assertNull(result.hits().getErrorHit(), "Result is not marked as an error");
@@ -113,7 +113,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(null, 100, 0));
expectedEvents.add(new Event(null, 200, 1));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
Coverage cov = result.getCoverage(true);
assertEquals(100000L, cov.getDocs());
@@ -134,7 +134,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(null, 100, 0));
expectedEvents.add(new Event(null, 200, 1));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
Coverage cov = result.getCoverage(true);
assertEquals(23420L, cov.getDocs());
@@ -156,7 +156,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(null, 100, 0));
expectedEvents.add(new Event(null, 200, 1));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
Coverage cov = result.getCoverage(true);
assertEquals(9900L, cov.getDocs());
@@ -178,7 +178,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(null, 100, 0));
expectedEvents.add(null);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
Coverage cov = result.getCoverage(true);
assertEquals(50155L, cov.getDocs());
@@ -213,7 +213,7 @@ public class InterleavedSearchInvokerTest {
query.setHits(8);
query.properties().set(Dispatcher.topKProbability, topKProbability);
SearchInvoker[] invokers = invoker.invokers().toArray(new SearchInvoker[0]);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(2, invokers.length);
assertEquals(expectedK, ((MockInvoker) invokers[0]).hitsRequested);
assertEquals(8, result.hits().size());
@@ -264,7 +264,7 @@ public class InterleavedSearchInvokerTest {
void requireThatMergeOfConcreteHitsObeySorting() throws IOException {
try (InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(A5, B5, new Group(0, List.of()))) {
query.setHits(12);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(10, result.hits().size());
assertEquals(11.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(1.0, result.hits().get(9).getRelevance().getScore(), DELTA);
@@ -273,7 +273,7 @@ public class InterleavedSearchInvokerTest {
}
try ( InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(B5, A5, new Group(0, List.of()))) {
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(10, result.hits().size());
assertEquals(11.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(1.0, result.hits().get(9).getRelevance().getScore(), DELTA);
@@ -287,7 +287,7 @@ public class InterleavedSearchInvokerTest {
try (InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(A5, B5, new Group(0, List.of()))) {
query.setHits(3);
query.setOffset(5);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(3, result.hits().size());
assertEquals(7.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(3.0, result.hits().get(2).getRelevance().getScore(), DELTA);
@@ -297,7 +297,7 @@ public class InterleavedSearchInvokerTest {
try (InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(B5, A5, new Group(0, List.of()))) {
query.setOffset(5);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(3, result.hits().size());
assertEquals(7.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(3.0, result.hits().get(2).getRelevance().getScore(), DELTA);
@@ -311,7 +311,7 @@ public class InterleavedSearchInvokerTest {
try (InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(A5Aux, B5Aux, new Group(0, List.of()))) {
query.setHits(3);
query.setOffset(5);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(7, result.hits().size());
assertEquals(7.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(3.0, result.hits().get(2).getRelevance().getScore(), DELTA);
@@ -322,7 +322,7 @@ public class InterleavedSearchInvokerTest {
try (InterleavedSearchInvoker invoker = createInterLeavedTestInvoker(B5Aux, A5Aux, new Group(0, List.of()))) {
query.setOffset(5);
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(7, result.hits().size());
assertEquals(7.0, result.hits().get(0).getRelevance().getScore(), DELTA);
assertEquals(3.0, result.hits().get(2).getRelevance().getScore(), DELTA);
@@ -359,7 +359,7 @@ public class InterleavedSearchInvokerTest {
try (InterleavedSearchInvoker invoker = new InterleavedSearchInvoker(Timer.monotonic, invokers, hitEstimator, dispatchConfig, new Group(0, List.of()), Collections.emptySet())) {
invoker.responseAvailable(invokers.get(0));
invoker.responseAvailable(invokers.get(1));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
assertEquals(1, ((GroupingListHit) result.hits().get(0)).getGroupingList().size());
}
for (SearchInvoker invoker : invokers) {
@@ -404,7 +404,7 @@ public class InterleavedSearchInvokerTest {
expectedEvents.add(new Event(null, 1, 1));
expectedEvents.add(new Event(null, 100, 0));
- Result result = invoker.search(query, null);
+ Result result = invoker.search(query);
Coverage cov = result.getCoverage(true);
assertEquals(50155L, cov.getDocs());
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java b/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
index a1521a88fb7..e43f3b0bd9a 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/MockInvoker.java
@@ -40,7 +40,7 @@ class MockInvoker extends SearchInvoker {
}
@Override
- protected InvokerResult getSearchResult(Execution execution) {
+ protected InvokerResult getSearchResult() {
InvokerResult ret = new InvokerResult(query, 10);
if (coverage != null) {
ret.getResult().setCoverage(coverage);
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/RpcSearchInvokerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/RpcSearchInvokerTest.java
index 3f527f34f31..2600d8612f8 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/RpcSearchInvokerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/RpcSearchInvokerTest.java
@@ -9,7 +9,6 @@ import com.yahoo.prelude.fastsearch.VespaBackEndSearcher;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.dispatch.searchcluster.Node;
-import com.yahoo.search.searchchain.Execution;
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -45,7 +44,7 @@ public class RpcSearchInvokerTest {
assertEquals(10, request.getHits());
assertEquals(3, request.getOffset());
- assertTrue(request.getQueryTreeBlob().size() > 0);
+ assertFalse(request.getQueryTreeBlob().isEmpty());
var invoker2 = new RpcSearchInvoker(mockSearcher(), compressor, new Node("test", 8, "eight", 1), mockPool, 1000);
RpcSearchInvoker.RpcContext context2 = (RpcSearchInvoker.RpcContext) invoker2.sendSearchRequest(q, context);
@@ -121,7 +120,7 @@ public class RpcSearchInvokerTest {
private VespaBackEndSearcher mockSearcher() {
return new VespaBackEndSearcher() {
@Override
- protected Result doSearch2(Query query, Execution execution) {
+ protected Result doSearch2(String schema, Query query) {
fail("Unexpected call");
return null;
}
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
index 3d9a958c757..c7e95f802ab 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingSearcherTestCase.java
@@ -16,7 +16,6 @@ import com.yahoo.search.Result;
import com.yahoo.search.result.Hit;
import com.yahoo.search.schema.Schema;
import com.yahoo.search.schema.SchemaInfo;
-import com.yahoo.search.searchchain.Execution;
import com.yahoo.searchlib.aggregation.Grouping;
import com.yahoo.vdslib.DocumentSummary;
import com.yahoo.vdslib.SearchResult;
@@ -161,9 +160,7 @@ public class StreamingSearcherTestCase {
}
private static Result executeQuery(StreamingSearcher searcher, Query query) {
- Execution execution = new Execution(Execution.Context.createContextStub());
- query.getModel().setRestrict("test");
- return searcher.doSearch2(query, execution);
+ return searcher.doSearch2("test", query);
}
private static Query[] generateTestQueries(String queryString) {
diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingVisitorTest.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingVisitorTest.java
index afc78cf00ed..30fb33ee8c8 100644
--- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingVisitorTest.java
+++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/StreamingVisitorTest.java
@@ -189,17 +189,17 @@ public class StreamingVisitorTest {
return query;
}
- private void verifyVisitorParameters(VisitorParameters params, QueryArguments qa, String searchCluster, String docType, Route route) {
+ private void verifyVisitorParameters(VisitorParameters params, QueryArguments qa, String searchCluster, String schema, Route route) {
//System.out.println("params="+params);
// Verify parameters based on properties
if (qa.userId != null) {
- assertEquals(docType + " and ( id.user=="+qa.userId + " )", params.getDocumentSelection());
+ assertEquals(schema + " and ( id.user=="+qa.userId + " )", params.getDocumentSelection());
} else if (qa.groupName != null) {
- assertEquals(docType + " and ( id.group==\""+qa.groupName+"\" )", params.getDocumentSelection());
+ assertEquals(schema + " and ( id.group==\""+qa.groupName+"\" )", params.getDocumentSelection());
} else if ((qa.selection == null) || qa.selection.isEmpty()) {
- assertEquals(docType, params.getDocumentSelection());
+ assertEquals(schema, params.getDocumentSelection());
} else {
- assertEquals(docType + " and ( " + qa.selection + " )", params.getDocumentSelection());
+ assertEquals(schema + " and ( " + qa.selection + " )", params.getDocumentSelection());
}
assertEquals(qa.from, params.getFromTimestamp());
assertEquals(qa.to, params.getToTimestamp());
@@ -224,7 +224,7 @@ public class StreamingVisitorTest {
//System.err.println("query="+new String(params.getLibraryParameters().get("querystackcount")));
assertNotNull(params.getLibraryParameters().get("querystackcount")); // TODO: Check contents
assertEquals(searchCluster, new String(params.getLibraryParameters().get("searchcluster")));
- assertEquals(docType, new String(params.getLibraryParameters().get("schema")));
+ assertEquals(schema, new String(params.getLibraryParameters().get("schema")));
assertEquals(Objects.requireNonNullElse(qa.summary, "default"), new String(params.getLibraryParameters().get("summaryclass")));
assertEquals(Integer.toString(qa.offset+qa.hits), new String(params.getLibraryParameters().get("summarycount")));
assertEquals(Objects.requireNonNullElse(qa.profile, "default"), new String(params.getLibraryParameters().get("rankprofile")));