summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlli Virtanen <olli.virtanen@oath.com>2018-10-24 13:42:54 +0200
committerOlli Virtanen <olli.virtanen@oath.com>2018-10-24 13:42:54 +0200
commitbaedadbd45bbf65f94d725b40656507b5404b14e (patch)
tree531ef304f0ae810f4c80146434cfa89043570cfa
parent6f87ff5a1fecbbac84e2015b7ce8575353842507 (diff)
Take group temporarily out of rotation on connection error
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java4
2 files changed, 5 insertions, 0 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 4638583a3f5..235e7af09d2 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
@@ -145,6 +145,7 @@ public class Dispatcher extends AbstractComponent {
return invoker;
} else {
// invoker could not be produced (likely connectivity issue)
+ searchCluster.groupConnectionFailure(group);
loadBalancer.releaseGroup(group);
if (tried == null) {
tried = new HashSet<>();
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java
index dbe013f80c7..e26dd5648eb 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java
@@ -216,6 +216,10 @@ public class SearchCluster implements NodeManager<SearchCluster.Node> {
vipStatus.removeFromRotation(this);
}
+ public void groupConnectionFailure(Group group) {
+ group.setHasSufficientCoverage(false); // will be reset after next ping iteration
+ }
+
private void updateSufficientCoverage(Group group, boolean sufficientCoverage) {
// update VIP status if we direct dispatch to this group and coverage status changed
if (usesDirectDispatchTo(group) && sufficientCoverage != group.hasSufficientCoverage()) {