summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-09-19 15:52:44 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-09-19 15:52:44 +0200
commit195a072e1ea5fd87e0e4c898f5add375849854f0 (patch)
treeaef5cce170063eb9a09b540fca8043850d8ac179 /container-search
parenta5f2a502c0006d08d75cc7542d45b39f0d722c5a (diff)
Clarify logic: No functional change
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/SearchCluster.java36
1 files changed, 17 insertions, 19 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 6f775e7218e..e2719545a6a 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
@@ -232,35 +232,33 @@ public class SearchCluster implements NodeManager<Node> {
updateVipStatusOnCoverageChange(group, sufficientCoverage);
}
- private void updateVipStatusOnNodeChange(Node node, boolean working) {
- if (usesLocalCorpusIn(node)) { // follow the status of the local corpus
- if (working)
- vipStatus.addToRotation(clusterId);
- else
- vipStatus.removeFromRotation(clusterId);
+ private void updateVipStatusOnNodeChange(Node node, boolean nodeIsWorking) {
+ if (localCorpusDispatchTarget.isEmpty()) { // consider entire cluster
+ if (hasInformationAboutAllNodes())
+ setInRotationOnlyIf(hasWorkingNodes());
}
- else if (localCorpusDispatchTarget.isEmpty() && hasInformationAboutAllNodes()) {
- if (hasWorkingNodes())
- vipStatus.addToRotation(clusterId);
- else
- vipStatus.removeFromRotation(clusterId);
+ else if (usesLocalCorpusIn(node)) { // follow the status of this node
+ setInRotationOnlyIf(nodeIsWorking);
}
}
private void updateVipStatusOnCoverageChange(Group group, boolean sufficientCoverage) {
- boolean isInRotation = vipStatus.isInRotation();
- if (usesLocalCorpusIn(group)) { // follow the status of the local corpus
- if (sufficientCoverage)
+ if ( localCorpusDispatchTarget.isEmpty()) { // consider entire cluster
+ if (vipStatus.isInRotation() && sufficientCoverage)
vipStatus.addToRotation(clusterId);
- else
- vipStatus.removeFromRotation(clusterId);
}
- else if ( localCorpusDispatchTarget.isEmpty()) {
- if (isInRotation && sufficientCoverage)
- vipStatus.addToRotation(clusterId);
+ else if (usesLocalCorpusIn(group)) { // follow the status of this group
+ setInRotationOnlyIf(sufficientCoverage);
}
}
+ private void setInRotationOnlyIf(boolean inRotation) {
+ if (inRotation)
+ vipStatus.addToRotation(clusterId);
+ else
+ vipStatus.removeFromRotation(clusterId);
+ }
+
private boolean hasInformationAboutAllNodes() {
return nodesByHost.values().stream().allMatch(Node::getStatusIsKnown);
}