summaryrefslogtreecommitdiffstats
path: root/container-search/src
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-07-07 11:25:14 +0200
committerjonmv <venstad@gmail.com>2023-07-07 11:25:14 +0200
commitaaa9f4184630a00f542c846902337fd1843198d5 (patch)
tree71a7ea6840b50bf1276847c1e92f4d0bd3f19893 /container-search/src
parent85c6a1ef03591bc1d696ef0b1a73ade7e8731bc7 (diff)
Avoid overflow for warmup end time computation
Diffstat (limited to 'container-search/src')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchGroupsImpl.java5
3 files changed, 11 insertions, 9 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 4e4b77422c1..db7e80a95e5 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
@@ -35,11 +35,11 @@ import java.util.Set;
/**
* A dispatcher communicates with search nodes to perform queries and fill hits.
- *
+ * <p>
* This class allocates {@link SearchInvoker} and {@link FillInvoker} objects based
* on query properties and general system status. The caller can then use the provided
* invocation object to execute the search or fill.
- *
+ * <p>
* This class is multithread safe.
*
* @author bratseth
@@ -111,6 +111,7 @@ public class Dispatcher extends AbstractComponent {
searchCluster.addMonitoring(clusterMonitor);
return items;
}
+
private void initialWarmup(double warmupTime) {
Thread warmup = new Thread(() -> warmup(warmupTime));
warmup.start();
@@ -130,10 +131,10 @@ public class Dispatcher extends AbstractComponent {
private static LoadBalancer.Policy toLoadBalancerPolicy(DispatchConfig.DistributionPolicy.Enum policy) {
return switch (policy) {
- case ROUNDROBIN: yield LoadBalancer.Policy.ROUNDROBIN;
- case BEST_OF_RANDOM_2: yield LoadBalancer.Policy.BEST_OF_RANDOM_2;
- case ADAPTIVE,LATENCY_AMORTIZED_OVER_REQUESTS: yield LoadBalancer.Policy.LATENCY_AMORTIZED_OVER_REQUESTS;
- case LATENCY_AMORTIZED_OVER_TIME: yield LoadBalancer.Policy.LATENCY_AMORTIZED_OVER_TIME;
+ case ROUNDROBIN -> LoadBalancer.Policy.ROUNDROBIN;
+ case BEST_OF_RANDOM_2 -> LoadBalancer.Policy.BEST_OF_RANDOM_2;
+ case ADAPTIVE,LATENCY_AMORTIZED_OVER_REQUESTS -> LoadBalancer.Policy.LATENCY_AMORTIZED_OVER_REQUESTS;
+ case LATENCY_AMORTIZED_OVER_TIME -> LoadBalancer.Policy.LATENCY_AMORTIZED_OVER_TIME;
};
}
private static List<Node> toNodes(DispatchNodesConfig nodesConfig) {
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
index 1be45b01367..9c65cb3d4c0 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java
@@ -99,7 +99,7 @@ public class SearchCluster implements NodeManager<Node> {
private Collection<Group> groups() { return groups.groups(); }
public int groupsWithSufficientCoverage() {
- return (int)groups().stream().filter(Group::hasSufficientCoverage).count();
+ return (int) groups().stream().filter(Group::hasSufficientCoverage).count();
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchGroupsImpl.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchGroupsImpl.java
index 3e6e092ea70..514f0de4fec 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchGroupsImpl.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchGroupsImpl.java
@@ -3,6 +3,7 @@ package com.yahoo.search.dispatch.searchcluster;
import com.google.common.math.Quantiles;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -38,7 +39,7 @@ public class SearchGroupsImpl implements SearchGroups {
public long medianDocumentsPerGroup() {
if (isEmpty()) return 0;
- var activeDocuments = groups().stream().map(Group::activeDocuments).toList();
- return (long) Quantiles.median().compute(activeDocuments);
+ double[] activeDocuments = groups().stream().mapToDouble(Group::activeDocuments).toArray();
+ return (long) Quantiles.median().computeInPlace(activeDocuments);
}
}