aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@vespa.ai>2024-06-03 14:18:02 +0000
committerTor Brede Vekterli <vekterli@vespa.ai>2024-06-03 14:18:02 +0000
commitc591269b058d2573dc3968b3d869bcc6c27a4adf (patch)
tree7877e8e306276a36e70da737ef4b5a8190b13964 /config-model/src/main
parenta583af74d94ba8ab9562f9847443747a954a0fd8 (diff)
Add feature flag for enforcing strictly increasing cluster state versions
Applies to `stor-server` config for both distributors and storage nodes. Defaults to `false` for now.
Diffstat (limited to 'config-model/src/main')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java10
3 files changed, 23 insertions, 4 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 970597685da..5b144f5950a 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
@@ -84,6 +84,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private int persistenceThreadMaxFeedOpBatchSize = 1;
private boolean logserverOtelCol = false;
private boolean symmetricPutAndActivateReplicaSelection = false;
+ private boolean enforceStrictlyIncreasingClusterStateVersions = false;
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -142,6 +143,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public int persistenceThreadMaxFeedOpBatchSize() { return persistenceThreadMaxFeedOpBatchSize; }
@Override public boolean logserverOtelCol() { return logserverOtelCol; }
@Override public boolean symmetricPutAndActivateReplicaSelection() { return symmetricPutAndActivateReplicaSelection; }
+ @Override public boolean enforceStrictlyIncreasingClusterStateVersions() { return enforceStrictlyIncreasingClusterStateVersions; }
public TestProperties sharedStringRepoNoReclaim(boolean sharedStringRepoNoReclaim) {
this.sharedStringRepoNoReclaim = sharedStringRepoNoReclaim;
@@ -382,6 +384,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties setEnforceStrictlyIncreasingClusterStateVersions(boolean enforce) {
+ this.enforceStrictlyIncreasingClusterStateVersions = enforce;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
private final String hostName;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
index 1e35a94db59..f218cedb74e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DistributorCluster.java
@@ -36,6 +36,7 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen
private final int maxActivationInhibitedOutOfSyncGroups;
private final int contentLayerMetadataFeatureLevel;
private final boolean symmetricPutAndActivateReplicaSelection;
+ private final boolean enforceStrictlyIncreasingClusterStateVersions;
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilderBase<DistributorCluster> {
@@ -100,13 +101,15 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen
int maxInhibitedGroups = featureFlags.maxActivationInhibitedOutOfSyncGroups();
int contentLayerMetadataFeatureLevel = featureFlags.contentLayerMetadataFeatureLevel();
boolean symmetricPutAndActivateReplicaSelection = featureFlags.symmetricPutAndActivateReplicaSelection();
+ boolean enforceStrictlyIncreasingClusterStateVersions = featureFlags.enforceStrictlyIncreasingClusterStateVersions();
return new DistributorCluster(parent,
new BucketSplitting.Builder().build(new ModelElement(producerSpec)), gc,
hasIndexedDocumentType,
maxInhibitedGroups,
contentLayerMetadataFeatureLevel,
- symmetricPutAndActivateReplicaSelection);
+ symmetricPutAndActivateReplicaSelection,
+ enforceStrictlyIncreasingClusterStateVersions);
}
}
@@ -114,7 +117,8 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen
GcOptions gc, boolean hasIndexedDocumentType,
int maxActivationInhibitedOutOfSyncGroups,
int contentLayerMetadataFeatureLevel,
- boolean symmetricPutAndActivateReplicaSelection)
+ boolean symmetricPutAndActivateReplicaSelection,
+ boolean enforceStrictlyIncreasingClusterStateVersions)
{
super(parent, "distributor");
this.parent = parent;
@@ -124,6 +128,7 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen
this.maxActivationInhibitedOutOfSyncGroups = maxActivationInhibitedOutOfSyncGroups;
this.contentLayerMetadataFeatureLevel = contentLayerMetadataFeatureLevel;
this.symmetricPutAndActivateReplicaSelection = symmetricPutAndActivateReplicaSelection;
+ this.enforceStrictlyIncreasingClusterStateVersions = enforceStrictlyIncreasingClusterStateVersions;
}
@Override
@@ -159,6 +164,7 @@ public class DistributorCluster extends TreeConfigProducer<Distributor> implemen
builder.root_folder("");
builder.cluster_name(parent.getName());
builder.is_distributor(true);
+ builder.require_strictly_increasing_cluster_state_versions(enforceStrictlyIncreasingClusterStateVersions);
}
public String getClusterName() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
index 701da93a329..8bde038b160 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/storagecluster/StorageCluster.java
@@ -31,13 +31,15 @@ public class StorageCluster extends TreeConfigProducer<StorageNode>
protected StorageCluster doBuild(DeployState deployState, TreeConfigProducer<AnyConfigProducer> ancestor, Element producerSpec) {
final ModelElement clusterElem = new ModelElement(producerSpec);
final ContentCluster cluster = (ContentCluster)ancestor;
+ var featureFlags = deployState.getProperties().featureFlags();
return new StorageCluster(ancestor,
ContentCluster.getClusterId(clusterElem),
new FileStorProducer.Builder().build(deployState.getProperties(), cluster, clusterElem),
new StorServerProducer.Builder().build(deployState.getProperties(), clusterElem),
new StorVisitorProducer.Builder().build(clusterElem),
- new PersistenceProducer.Builder().build(clusterElem));
+ new PersistenceProducer.Builder().build(clusterElem),
+ featureFlags.enforceStrictlyIncreasingClusterStateVersions());
}
}
@@ -46,19 +48,22 @@ public class StorageCluster extends TreeConfigProducer<StorageNode>
private final StorServerProducer storServerProducer;
private final StorVisitorProducer storVisitorProducer;
private final PersistenceProducer persistenceProducer;
+ private final boolean enforceStrictlyIncreasingClusterStateVersions;
StorageCluster(TreeConfigProducer<?> parent,
String clusterName,
FileStorProducer fileStorProducer,
StorServerProducer storServerProducer,
StorVisitorProducer storVisitorProducer,
- PersistenceProducer persistenceProducer) {
+ PersistenceProducer persistenceProducer,
+ boolean enforceStrictlyIncreasingClusterStateVersions) {
super(parent, "storage");
this.clusterName = clusterName;
this.fileStorProducer = fileStorProducer;
this.storServerProducer = storServerProducer;
this.storVisitorProducer = storVisitorProducer;
this.persistenceProducer = persistenceProducer;
+ this.enforceStrictlyIncreasingClusterStateVersions = enforceStrictlyIncreasingClusterStateVersions;
}
@Override
@@ -85,6 +90,7 @@ public class StorageCluster extends TreeConfigProducer<StorageNode>
@Override
public void getConfig(StorServerConfig.Builder builder) {
storServerProducer.getConfig(builder);
+ builder.require_strictly_increasing_cluster_state_versions(enforceStrictlyIncreasingClusterStateVersions);
}
@Override