diff options
author | Arne H Juul <arnej@yahoo-inc.com> | 2017-02-07 11:53:33 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahoo-inc.com> | 2017-02-07 12:01:24 +0000 |
commit | ebec2d92ec3cb9e72a2abfb7118c381767de53b3 (patch) | |
tree | 4e6e2981ea2d18981ea9f560723ec3074ca61fe1 /container-search | |
parent | 46187939590b1fd4735a538a8b1b1e7a879b9d60 (diff) |
changing initial state did not work
* turns out ClusterSearcher depends on initial state "working",
so it got duplicates in the Hasher when transitioning from
initial to working, then got null pointers when transitioning
to down. Go back to initial isWorking=true.
* When a backend fails, also clear its searchNodesOnline flag.
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/cluster/ClusterMonitor.java | 2 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterMonitor.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterMonitor.java index 0312db914df..bb5accd9022 100644 --- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterMonitor.java +++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterMonitor.java @@ -89,7 +89,7 @@ public class ClusterMonitor implements Runnable, Freezable { monitor.responded(hasSearchNodesOnline); if (wasFailing && monitor.isWorking()) { log.info("Failed node '" + node + "' started working again."); - nodeManager.working(monitor.getNode()); + nodeManager.working(node); } updateVipStatus(); } diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java b/container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java index ab52bab08a0..ba2c693a0fe 100644 --- a/container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java +++ b/container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java @@ -28,7 +28,7 @@ public class NodeMonitor { /** The object representing the monitored node */ private final VespaBackEndSearcher node; - private boolean isWorking = false; + private boolean isWorking = true; /** The last time this node responded successfully */ private long succeededAt = 0; @@ -72,6 +72,7 @@ public class NodeMonitor { // Only count not being able to talk to backend at all // as errors we care about if ((respondedAt - succeededAt) > 10000) { + this.searchNodesOnline = false; setWorking(false, "Not working for 10 s: " + error.toString()); } } else { @@ -95,9 +96,9 @@ public class NodeMonitor { if (isWorking == working) return; // Old news if (working && ! atStartUp) - log.info("Putting " + node + " in service:" + explanation); + log.info("Putting " + node + " in service: " + explanation); else if (! atStartUp) - log.info("Taking " + node + " out of service:" + explanation); + log.info("Taking " + node + " out of service: " + explanation); isWorking = working; } |