diff options
author | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-01-17 12:39:12 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@verizonmedia.com> | 2020-01-17 12:39:12 +0100 |
commit | c28f13dac59167dee1257f5b23835e6441bc5f31 (patch) | |
tree | 7910cb0ce12e37b7af828c3b13c14b84cbcb0105 /config-model | |
parent | b324c19e007a7a57ba731ed72a01d35cd6937ed7 (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.java | 1 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/content/ClusterControllerConfig.java | 13 |
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()); |