summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahoo-inc.com>2017-02-07 11:53:33 +0000
committerArne H Juul <arnej@yahoo-inc.com>2017-02-07 12:01:24 +0000
commitebec2d92ec3cb9e72a2abfb7118c381767de53b3 (patch)
tree4e6e2981ea2d18981ea9f560723ec3074ca61fe1 /container-search
parent46187939590b1fd4735a538a8b1b1e7a879b9d60 (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.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/NodeMonitor.java7
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;
}