aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-02-27 13:53:04 +0100
committerGeir Storli <geirst@oath.com>2018-02-27 14:30:09 +0100
commitf501d44bb86ffb4c09b2d46d3809e3c869ec7041 (patch)
treeefd4c954a6619f6f423289a0a250c4de2800fe21 /clustercontroller-core/src/main
parent112279999e9d453698ed9f7edff6eb047dc23761 (diff)
Wire buckets pending state into state version tracker.
Diffstat (limited to 'clustercontroller-core/src/main')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java4
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsBucketsPendingState.java6
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java6
3 files changed, 14 insertions, 2 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
index 6ce719a97de..62cd158c759 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateView.java
@@ -112,6 +112,10 @@ public class ClusterStateView {
StorageNodeStatsBridge.generate(hostInfo.getDistributor()));
}
+ public ClusterStatsAggregator getStatsAggregator() {
+ return statsAggregator;
+ }
+
public String toString() {
return clusterState.toString();
}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsBucketsPendingState.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsBucketsPendingState.java
index e556841c835..dfa64d72521 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsBucketsPendingState.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStatsBucketsPendingState.java
@@ -17,8 +17,12 @@ public class ClusterStatsBucketsPendingState {
this.prevMayHaveBucketsPending = false;
}
- public void updateAggregator(ClusterStatsAggregator newAggregator) {
+ public void syncBucketsPendingFlag() {
prevMayHaveBucketsPending = aggregator.mayHaveBucketsPendingInGlobalSpace();
+ }
+
+ public void updateAggregator(ClusterStatsAggregator newAggregator) {
+ syncBucketsPendingFlag();
aggregator = newAggregator;
}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
index 78e587a7446..c2be8047a13 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/StateVersionTracker.java
@@ -33,12 +33,14 @@ public class StateVersionTracker {
private ClusterStateBundle currentClusterState = latestCandidateState;
private ClusterStateView clusterStateView;
+ private ClusterStatsBucketsPendingState bucketsPendingState;
private final LinkedList<ClusterStateHistoryEntry> clusterStateHistory = new LinkedList<>();
private int maxHistoryEntryCount = 50;
StateVersionTracker() {
clusterStateView = ClusterStateView.create(currentUnversionedState.getBaselineClusterState());
+ bucketsPendingState = new ClusterStatsBucketsPendingState(clusterStateView.getStatsAggregator());
}
void setVersionRetrievedFromZooKeeper(final int version) {
@@ -84,6 +86,7 @@ public class StateVersionTracker {
public void updateLatestCandidateStateBundle(final ClusterStateBundle candidateBundle) {
assert(latestCandidateState.getBaselineClusterState().getVersion() == 0);
latestCandidateState = candidateBundle;
+ bucketsPendingState.syncBucketsPendingFlag();
}
/**
@@ -122,6 +125,7 @@ public class StateVersionTracker {
newStateBundle.getBaselineClusterState().getDistributionBitCount());
// TODO should this take place in updateLatestCandidateStateBundle instead? I.e. does it require a consolidated state?
clusterStateView = ClusterStateView.create(currentClusterState.getBaselineClusterState());
+ bucketsPendingState.updateAggregator(clusterStateView.getStatsAggregator());
}
private void recordCurrentStateInHistoryAtTime(final long currentTimeMs) {
@@ -138,7 +142,7 @@ public class StateVersionTracker {
}
boolean bucketSpaceMergeCompletionStateHasChanged() {
- return false; // TODO wire changes in merge info
+ return bucketsPendingState.stateHasChanged();
}
/*