diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-09-19 21:19:48 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-09-19 21:19:48 +0200 |
commit | 13b9f16b13a370ddaea0460d8d3721e5f2ef1c8f (patch) | |
tree | 3300800914affdcd56f4753dbd6c817ed943ce89 /container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java | |
parent | 7b64e79d96cf9b3f61bd385f0a32e9454a4ef3d2 (diff) |
Transition from down to up initially
- Use tri-state logic for working/failing/unknown
- Be initially down in test and verify we come up
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/cluster/ClusterMonitor.java | 21 |
1 files changed, 8 insertions, 13 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 b79f6f49c19..015adcf3490 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 @@ -33,7 +33,7 @@ public class ClusterMonitor<T> { private volatile boolean shutdown = false; /** A map from Node to corresponding MonitoredNode */ - private final Map<T, BaseNodeMonitor<T>> nodeMonitors = Collections.synchronizedMap(new java.util.LinkedHashMap<>()); + private final Map<T, TrafficNodeMonitor<T>> nodeMonitors = Collections.synchronizedMap(new java.util.LinkedHashMap<>()); public ClusterMonitor(NodeManager<T> manager) { nodeManager = manager; @@ -56,8 +56,7 @@ public class ClusterMonitor<T> { * @param internal whether or not this node is internal to this cluster */ public void add(T node, boolean internal) { - BaseNodeMonitor<T> monitor = new TrafficNodeMonitor<>(node, configuration, internal); - nodeMonitors.put(node, monitor); + nodeMonitors.put(node, new TrafficNodeMonitor<>(node, configuration, internal)); } /** @@ -69,24 +68,20 @@ public class ClusterMonitor<T> { /** Called from ClusterSearcher/NodeManager when a node failed */ public synchronized void failed(T node, ErrorMessage error) { - nodeManager.statusIsKnown(node); - BaseNodeMonitor<T> monitor = nodeMonitors.get(node); - boolean wasWorking = monitor.isWorking(); + TrafficNodeMonitor<T> monitor = nodeMonitors.get(node); + Boolean wasWorking = monitor.isKnownWorking(); monitor.failed(error); - if (wasWorking && !monitor.isWorking()) { + if (wasWorking != monitor.isKnownWorking()) nodeManager.failed(node); - } } /** Called when a node responded */ public synchronized void responded(T node) { - nodeManager.statusIsKnown(node); - BaseNodeMonitor<T> monitor = nodeMonitors.get(node); - boolean wasFailing =! monitor.isWorking(); + TrafficNodeMonitor<T> monitor = nodeMonitors.get(node); + Boolean wasWorking = monitor.isKnownWorking(); monitor.responded(); - if (wasFailing && monitor.isWorking()) { + if (wasWorking != monitor.isKnownWorking()) nodeManager.working(monitor.getNode()); - } } /** |