summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2021-01-28 16:05:25 +0100
committerGitHub <noreply@github.com>2021-01-28 16:05:25 +0100
commit26d2a141bd34e8c93bbd23c06e08432b71bc7fb0 (patch)
tree4601442488c14450c7aacdf9d3b3e97542f67472
parent98bb9f14c0b577b09a0f0c2bc353f0117f7e3e1d (diff)
parenta07bb80ad57e6a5f95218228c63e92450f768081 (diff)
Merge pull request #16277 from vespa-engine/arnej/publish-old-metrics-in-clustercontroller
add maybePublishOldMetrics hook
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetController.java16
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;