diff options
author | Olli Virtanen <olli.virtanen@oath.com> | 2018-10-24 13:42:54 +0200 |
---|---|---|
committer | Olli Virtanen <olli.virtanen@oath.com> | 2018-10-24 13:42:54 +0200 |
commit | baedadbd45bbf65f94d725b40656507b5404b14e (patch) | |
tree | 531ef304f0ae810f4c80146434cfa89043570cfa | |
parent | 6f87ff5a1fecbbac84e2015b7ce8575353842507 (diff) |
Take group temporarily out of rotation on connection error
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java | 1 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/dispatch/SearchCluster.java | 4 |
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()) { |