diff options
author | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-10-11 11:17:05 +0200 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-10-11 11:17:05 +0200 |
commit | 92a0453920fb9e1962108b79bd4c44e9a55edae0 (patch) | |
tree | dfb3d4e05caa747db956b2d7e5fcd5d38e4be5ec /clustercontroller-core/src | |
parent | 41954227a91b74499f24326ab288ea21f8eae604 (diff) |
Avoid busy-looping when distributors fail to ACK state version
Diffstat (limited to 'clustercontroller-core/src')
2 files changed, 3 insertions, 7 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java index 120b482e11d..76d59622fe7 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java @@ -550,7 +550,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd if ( ! isRunning()) { return; } if (masterElectionHandler.isMaster()) { didWork |= broadcastClusterStateToEligibleNodes(); - didWork |= systemStateBroadcaster.checkIfClusterStateIsAckedByAllDistributors(database, databaseContext, this); + systemStateBroadcaster.checkIfClusterStateIsAckedByAllDistributors(database, databaseContext, this); } if ( ! isRunning()) { return; } diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java index 8860bef2fae..5c035a0d5a7 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/SystemStateBroadcaster.java @@ -109,15 +109,12 @@ public class SystemStateBroadcaster { * Checks if all distributor nodes have ACKed the most recent cluster state. Iff this * is the case, triggers handleAllDistributorsInSync() on the provided FleetController * object and updates the broadcaster's last known in-sync cluster state version. - * - * Returns true if distributor nodes were checked, false if cluster is already in sync - * or no state has been published yet. */ - boolean checkIfClusterStateIsAckedByAllDistributors(DatabaseHandler database, + void checkIfClusterStateIsAckedByAllDistributors(DatabaseHandler database, DatabaseHandler.Context dbContext, FleetController fleetController) throws InterruptedException { if ((systemState == null) || (lastClusterStateInSync == systemState.getVersion())) { - return false; // Nothing to do for the current state + return; // Nothing to do for the current state } boolean anyOutdatedDistributorNodes = dbContext.getCluster().getNodeInfo().stream() .filter(NodeInfo::isDistributor) @@ -128,7 +125,6 @@ public class SystemStateBroadcaster { lastClusterStateInSync = systemState.getVersion(); fleetController.handleAllDistributorsInSync(database, dbContext); } - return true; } public boolean broadcastNewState(DatabaseHandler database, |