summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-01-08 23:01:46 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-01-08 23:01:46 +0100
commitc49a1256ef4c431f7a59018e4d62d1942fdeaf1e (patch)
tree883f7411e58ffbbb09238fd95d7bf76e6076bf92 /container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
parent93057cb2141dee8846c9304eb6a9aae2ba9c4dc0 (diff)
Support max-hits-per-node in Dispatcher
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
index 224facd0c5b..03b51fbaf70 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java
@@ -66,6 +66,8 @@ public class Dispatcher extends AbstractComponent {
private final Metric metric;
private final Metric.Context metricContext;
+ private final int maxHitsPerNode;
+
private static final QueryProfileType argumentType;
static {
@@ -120,6 +122,7 @@ public class Dispatcher extends AbstractComponent {
this.invokerFactory = invokerFactory;
this.metric = metric;
this.metricContext = metric.createContext(null);
+ this.maxHitsPerNode = dispatchConfig.maxHitsPerNode();
searchCluster.startClusterMonitoring(pingFactory);
}
@@ -161,7 +164,11 @@ public class Dispatcher extends AbstractComponent {
if (nodes.isEmpty()) return Optional.empty();
query.trace(false, 2, "Dispatching with search path ", searchPath);
- return invokerFactory.createSearchInvoker(searcher, query, OptionalInt.empty(), nodes, true);
+ return invokerFactory.createSearchInvoker(searcher, query,
+ OptionalInt.empty(),
+ nodes,
+ true,
+ maxHitsPerNode);
} catch (InvalidSearchPathException e) {
return Optional.of(new SearchErrorInvoker(ErrorMessage.createIllegalQuery(e.getMessage())));
}
@@ -172,7 +179,12 @@ public class Dispatcher extends AbstractComponent {
if (directNode.isPresent()) {
Node node = directNode.get();
query.trace(false, 2, "Dispatching to ", node);
- return invokerFactory.createSearchInvoker(searcher, query, OptionalInt.empty(), Arrays.asList(node), true)
+ return invokerFactory.createSearchInvoker(searcher,
+ query,
+ OptionalInt.empty(),
+ Arrays.asList(node),
+ true,
+ maxHitsPerNode)
.orElseThrow(() -> new IllegalStateException("Could not dispatch directly to " + node));
}
@@ -190,7 +202,8 @@ public class Dispatcher extends AbstractComponent {
query,
OptionalInt.of(group.id()),
group.nodes(),
- acceptIncompleteCoverage);
+ acceptIncompleteCoverage,
+ maxHitsPerNode);
if (invoker.isPresent()) {
query.trace(false, 2, "Dispatching to group ", group.id());
query.getModel().setSearchPath("/" + group.id());