diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-18 15:48:42 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-18 15:48:42 +0200 |
commit | ec5e957ef3e00d3a89007a8615b66da8b65703e8 (patch) | |
tree | 483e25e5d8ea9d69950b4111fad06d7e3a11005b /container-search | |
parent | 44f08a00c6537929bcf8a812b4ec4fb046e8ed1c (diff) |
Ensure that we will set the vipstatus to good when we are good.
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java index dc35ebdc65f..833147e1a56 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java @@ -223,14 +223,15 @@ public class SearchCluster implements NodeManager<Node> { 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()) { - if (sufficientCoverage) { - vipStatus.addToRotation(clusterId); - } else { - vipStatus.removeFromRotation(clusterId); - } - } + boolean isInRotation = vipStatus.isInRotation(); + boolean hasChanged = sufficientCoverage != group.hasSufficientCoverage(); + boolean isDirectDispatchGroupAndChange = usesDirectDispatchTo(group) && hasChanged; group.setHasSufficientCoverage(sufficientCoverage); + if ((!isInRotation || isDirectDispatchGroupAndChange) && sufficientCoverage) { + vipStatus.addToRotation(clusterId); + } else if (isDirectDispatchGroupAndChange && ! sufficientCoverage) { + vipStatus.removeFromRotation(clusterId); + } } private boolean usesDirectDispatchTo(Node node) { @@ -373,7 +374,7 @@ public class SearchCluster implements NodeManager<Node> { private void trackGroupCoverageChanges(int index, Group group, boolean fullCoverage, long averageDocuments) { boolean changed = group.isFullCoverageStatusChanged(fullCoverage); - if(changed) { + if (changed) { int requiredNodes = groupSize() - dispatchConfig.maxNodesDownPerGroup(); if (fullCoverage) { log.info(() -> String.format("Group %d is now good again (%d/%d active docs, coverage %d/%d)", index, |