From 42d4d5611bba00de4286d42c2da70c2c1462eddb Mon Sep 17 00:00:00 2001 From: Tor Brede Vekterli Date: Wed, 30 Oct 2019 15:18:18 +0100 Subject: Pass working candidate state rather than published state to timer code Avoids triggering pointless cluster state recomputation edges because the timer code observes stale information. This can happen if publishing the candidate state is suppressed due to e.g. the minimum time between published state versions not having passed. --- .../java/com/yahoo/vespa/clustercontroller/core/FleetController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'clustercontroller-core/src') 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 b4965fbff7b..cbff11af730 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 @@ -812,8 +812,9 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd // Send getNodeState requests to zero or more nodes. didWork |= stateGatherer.sendMessages(cluster, communicator, this); - // Important: timer events must use a consolidated state, or they might trigger edge events multiple times. - didWork |= stateChangeHandler.watchTimers(cluster, consolidatedClusterState(), this); + // Important: timer events must use a state with pending changes visible, or they might + // trigger edge events multiple times. + didWork |= stateChangeHandler.watchTimers(cluster, stateVersionTracker.getLatestCandidateState().getClusterState(), this); didWork |= recomputeClusterStateIfRequired(); -- cgit v1.2.3