summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2020-01-17 12:39:12 +0100
committerHåkon Hallingstad <hakon@verizonmedia.com>2020-01-17 12:39:12 +0100
commitc28f13dac59167dee1257f5b23835e6441bc5f31 (patch)
tree7910cb0ce12e37b7af828c3b13c14b84cbcb0105 /config-model
parentb324c19e007a7a57ba731ed72a01d35cd6937ed7 (diff)
Use bucket_space metric in retirement
This makes the Cluster Controller use the vds.datastored.bucket_space.buckets_total, dimension bucketSpace=default, to determine whether a content node manages zero buckets, and if so, will allow the node to go permanently down. This is used when a node is retiring, and it is to be removed from the application. The change is guarded by the use-bucket-space-metric, default true. If the new metric doesn't work as expected, we can revert to using the current/old metric by flipping the flag. The flag can be controlled per application.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java13
2 files changed, 11 insertions, 3 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index cfa61560b29..9d561a79c75 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -58,6 +58,7 @@ public class TestProperties implements ModelContext.Properties {
@Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; }
@Override public Optional<TlsSecrets> tlsSecrets() { return tlsSecrets; }
@Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; }
+ @Override public boolean useBucketSpaceMetric() { return true; }
public TestProperties setDefaultTermwiseLimit(double limit) {
defaultTermwiseLimit = limit;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
index 1b0af3e9046..adff10ae580 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java
@@ -40,6 +40,8 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
bucketSplittingMinimumBits = clusterTuning.childAsInteger("bucket-splitting.minimum-bits");
}
+ boolean useBucketSpaceMetric = deployState.getProperties().useBucketSpaceMetric();
+
if (tuning != null) {
return new ClusterControllerConfig(ancestor, clusterName,
tuning.childAsDuration("init-progress-time"),
@@ -49,10 +51,11 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
tuning.childAsDouble("min-distributor-up-ratio"),
tuning.childAsDouble("min-storage-up-ratio"),
bucketSplittingMinimumBits,
- minNodeRatioPerGroup);
+ minNodeRatioPerGroup,
+ useBucketSpaceMetric);
} else {
return new ClusterControllerConfig(ancestor, clusterName, null, null, null, null, null, null,
- bucketSplittingMinimumBits, minNodeRatioPerGroup);
+ bucketSplittingMinimumBits, minNodeRatioPerGroup, useBucketSpaceMetric);
}
}
}
@@ -66,6 +69,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
Double minStorageUpRatio;
Integer minSplitBits;
private Double minNodeRatioPerGroup;
+ private boolean useBucketSpaceMetric;
// TODO refactor; too many args
private ClusterControllerConfig(AbstractConfigProducer parent,
@@ -77,7 +81,8 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
Double minDistributorUpRatio,
Double minStorageUpRatio,
Integer minSplitBits,
- Double minNodeRatioPerGroup) {
+ Double minNodeRatioPerGroup,
+ boolean useBucketSpaceMetric) {
super(parent, "fleetcontroller");
this.clusterName = clusterName;
@@ -89,6 +94,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
this.minStorageUpRatio = minStorageUpRatio;
this.minSplitBits = minSplitBits;
this.minNodeRatioPerGroup = minNodeRatioPerGroup;
+ this.useBucketSpaceMetric = useBucketSpaceMetric;
}
@Override
@@ -105,6 +111,7 @@ public class ClusterControllerConfig extends AbstractConfigProducer implements F
builder.index(0);
builder.cluster_name(clusterName);
builder.fleet_controller_count(getChildren().size());
+ builder.determine_buckets_from_bucket_space_metric(useBucketSpaceMetric);
if (initProgressTime != null) {
builder.init_progress_time((int) initProgressTime.getMilliSeconds());