aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main
diff options
context:
space:
mode:
authorGeir Storli <geirst@oath.com>2018-02-23 15:11:10 +0100
committerGeir Storli <geirst@oath.com>2018-02-27 09:37:08 +0100
commitdbeb5f7410923de5a30b83a27c5294560df9838e (patch)
tree1a9b54fdcb63e21033b8dd866de995b4ac125121 /clustercontroller-core/src/main
parentc23d4254fbeb47d110814046c70a08a4e2afcd12 (diff)
Add class checking whether a bucket space on a content node might have buckets pending.
Diffstat (limited to 'clustercontroller-core/src/main')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java28
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java4
2 files changed, 32 insertions, 0 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java
new file mode 100644
index 00000000000..6eb4d17a63d
--- /dev/null
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AggregatedStatsMergePendingChecker.java
@@ -0,0 +1,28 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.core;
+
+/**
+ * Class checking whether a particular bucket space on a content node might have buckets pending.
+ *
+ * Aggregated stats over the entire content cluster is used to check this.
+ */
+public class AggregatedStatsMergePendingChecker implements MergePendingChecker {
+
+ private final ContentClusterStats clusterStats;
+
+ public AggregatedStatsMergePendingChecker(ContentClusterStats clusterStats) {
+ this.clusterStats = clusterStats;
+ }
+
+ @Override
+ public boolean hasMergesPending(String bucketSpace, int contentNodeIndex) {
+ ContentNodeStats nodeStats = clusterStats.getContentNode(contentNodeIndex);
+ if (nodeStats != null) {
+ ContentNodeStats.BucketSpaceStats bucketSpaceStats = nodeStats.getBucketSpace(bucketSpace);
+ if (bucketSpaceStats != null && bucketSpaceStats.mayHaveBucketsPending()) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
index d47ce45216e..b579b406890 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ContentNodeStats.java
@@ -125,6 +125,10 @@ public class ContentNodeStats {
}
}
+ public BucketSpaceStats getBucketSpace(String bucketSpace) {
+ return bucketSpaces.get(bucketSpace);
+ }
+
public Map<String, BucketSpaceStats> getBucketSpaces() {
return bucketSpaces;
}