diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-01-28 08:54:24 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-01-28 14:13:47 +0000 |
commit | a07bb80ad57e6a5f95218228c63e92450f768081 (patch) | |
tree | b83e7a178950243719524d113fa0d151aa3087d6 /clustercontroller-core | |
parent | e5459aafc13a5114b853fc372b014843a2c2d922 (diff) |
add maybePublishOldMetrics hook
Diffstat (limited to 'clustercontroller-core')
-rw-r--r-- | clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java | 16 |
1 files changed, 16 insertions, 0 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 16b7894211e..6dc4b1e8015 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 @@ -74,6 +74,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd private boolean processingCycle = false; private boolean wantedStateChanged = false; private long cycleCount = 0; + private long lastMetricUpdateCycleCount = 0; private long nextStateSendTime = 0; private Long controllerThreadId = null; @@ -384,6 +385,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd ClusterState baselineState = stateBundle.getBaselineClusterState(); newStates.add(stateBundle); metricUpdater.updateClusterStateMetrics(cluster, baselineState); + lastMetricUpdateCycleCount = cycleCount; systemStateBroadcaster.handleNewClusterStates(stateBundle); // Iff master, always store new version in ZooKeeper _before_ publishing to any // nodes so that a cluster controller crash after publishing but before a successful @@ -393,6 +395,19 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd } } + private boolean maybePublishOldMetrics() { + verifyInControllerThread(); + if (cycleCount > 300 + lastMetricUpdateCycleCount) { + ClusterStateBundle stateBundle = stateVersionTracker.getVersionedClusterStateBundle(); + ClusterState baselineState = stateBundle.getBaselineClusterState(); + metricUpdater.updateClusterStateMetrics(cluster, baselineState); + lastMetricUpdateCycleCount = cycleCount; + return true; + } else { + return false; + } + } + private void storeClusterStateMetaDataToZooKeeper(ClusterStateBundle stateBundle) { try { database.saveLatestSystemStateVersion(databaseContext, stateBundle.getVersion()); @@ -605,6 +620,7 @@ public class FleetController implements NodeStateOrHostInfoChangeHandler, NodeAd if ( ! isRunning()) { return; } didWork |= processNextQueuedRemoteTask(); didWork |= completeSatisfiedVersionDependentTasks(); + didWork |= maybePublishOldMetrics(); processingCycle = false; ++cycleCount; |