diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-02-04 06:01:24 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-02-04 06:01:24 +0000 |
commit | eca9169a2922d7fcb7544a842a4e9b54971e54bf (patch) | |
tree | 74e38add8394ecc28992324a9b25a5f97ab78c9d /container-search/src/main | |
parent | 17e572d4dad3c9e5040544072dbdc9f7a703e7bd (diff) |
Do not start cluster monitor thread in test as it will race with explicit ping in test.
Diffstat (limited to 'container-search/src/main')
3 files changed, 15 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java index d4b6279be89..d871a256a62 100644 --- a/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java +++ b/container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java @@ -38,6 +38,9 @@ public class ClusterMonitor<T> { /** A map from Node to corresponding MonitoredNode */ private final Map<T, TrafficNodeMonitor<T>> nodeMonitors = Collections.synchronizedMap(new java.util.LinkedHashMap<>()); + /** @deprecated It is not advised to start the monitoring thread in the constructor. + * Use ClusterMonitor(NodeManager<T> manager, false) and explicit start(). */ + @Deprecated public ClusterMonitor(NodeManager<T> manager) { this(manager, true); } @@ -50,6 +53,12 @@ public class ClusterMonitor<T> { } } + public void start() { + if ( ! monitorThread.isAlive()) { + monitorThread.start(); + } + } + /** Returns the configuration of this cluster monitor */ public MonitorConfiguration getConfiguration() { return configuration; } 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 3fb0059ecb9..45e85c10f3f 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 @@ -124,7 +124,7 @@ public class Dispatcher extends AbstractComponent { this.metricContext = metric.createContext(null); this.maxHitsPerNode = dispatchConfig.maxHitsPerNode(); - searchCluster.startClusterMonitoring(pingFactory); + searchCluster.startClusterMonitoring(pingFactory, true); try { while ( ! searchCluster.hasInformationAboutAllNodes()) { Thread.sleep(1); 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 cbe24eb6907..54d49569ede 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 @@ -82,20 +82,23 @@ public class SearchCluster implements NodeManager<Node> { nodesByHost, groups); - this.clusterMonitor = new ClusterMonitor<>(this); + this.clusterMonitor = new ClusterMonitor<>(this, false); } public void shutDown() { clusterMonitor.shutdown(); } - public void startClusterMonitoring(PingFactory pingFactory) { + public void startClusterMonitoring(PingFactory pingFactory, boolean startPingThread) { this.pingFactory = pingFactory; for (var group : orderedGroups) { for (var node : group.nodes()) clusterMonitor.add(node, true); } + if (startPingThread) { + clusterMonitor.start(); + } } ClusterMonitor<Node> clusterMonitor() { return clusterMonitor; } |