aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-08-02 13:15:18 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2023-08-02 13:15:18 +0200
commit207177c8bb038530236dc32ffd5f382974de432e (patch)
treeb17e4e143aae7ff561c8fa6471d1d78243f3d7ed /config-model
parent93789e85dbcb0124fdde74fde9c1ba506ec7e1ae (diff)
Since redundancy is created late in the process we need to access it via a provider instead of providing in the constructor.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java20
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java2
4 files changed, 21 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 0b07ef59410..8dc58a33e04 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -35,7 +35,6 @@ import java.util.Optional;
import java.util.Objects;
import java.util.TreeMap;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
/**
* Encapsulates the various options for search in a content model.
@@ -44,7 +43,8 @@ import java.util.stream.Collectors;
public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer> implements
ProtonConfig.Producer,
DispatchNodesConfig.Producer,
- DispatchConfig.Producer
+ DispatchConfig.Producer,
+ Redundancy.Provider
{
private static final int DEFAULT_DOC_STORE_COMPRESSION_LEVEL = 3;
@@ -303,7 +303,7 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
if (element == null) {
searchNode = SearchNode.create(parent, "" + node.getDistributionKey(), node.getDistributionKey(), spec,
clusterName, node, flushOnShutdown, tuning, resourceLimits, deployState.isHosted(),
- fractionOfMemoryReserved, redundancy, deployState.featureFlags());
+ fractionOfMemoryReserved, this, deployState.featureFlags());
searchNode.setHostResource(node.getHostResource());
searchNode.initService(deployState);
@@ -312,7 +312,7 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
tls.initService(deployState);
} else {
searchNode = new SearchNode.Builder(""+node.getDistributionKey(), spec, clusterName, node, flushOnShutdown,
- tuning, resourceLimits, fractionOfMemoryReserved, redundancy)
+ tuning, resourceLimits, fractionOfMemoryReserved, this)
.build(deployState, parent, element.getXml());
tls = new TransactionLogServer.Builder(clusterName, syncTransactionLog).build(deployState, searchNode, element.getXml());
}
@@ -494,4 +494,6 @@ public class ContentSearchCluster extends TreeConfigProducer<AnyConfigProducer>
@Override
public String toString() { return "content cluster '" + clusterName + "'"; }
+ public Redundancy redundancy() { return redundancy; }
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
index 616dcbbc760..e883e87d36c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Redundancy.java
@@ -64,4 +64,8 @@ public class Redundancy implements StorDistributionConfig.Producer, ProtonConfig
builder.distribution(distBuilder);
}
+ public interface Provider {
+ Redundancy redundancy();
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index f238d30308b..53da4d31488 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -70,7 +70,7 @@ public class SearchNode extends AbstractService implements
private final Optional<Tuning> tuning;
private final Optional<ResourceLimits> resourceLimits;
private final double fractionOfMemoryReserved;
- private final Redundancy redundancy;
+ private final Redundancy.Provider redundancyProvider;
public static class Builder extends VespaDomBuilder.DomConfigProducerBuilderBase<SearchNode> {
@@ -82,11 +82,11 @@ public class SearchNode extends AbstractService implements
private final Optional<Tuning> tuning;
private final Optional<ResourceLimits> resourceLimits;
private final double fractionOfMemoryReserved;
- private final Redundancy redundancy;
+ private final Redundancy.Provider redundancyProvider;
public Builder(String name, NodeSpec nodeSpec, String clusterName, ContentNode node,
boolean flushOnShutdown, Optional<Tuning> tuning, Optional<ResourceLimits> resourceLimits,
- double fractionOfMemoryReserved, Redundancy redundancy) {
+ double fractionOfMemoryReserved, Redundancy.Provider redundancyprovider) {
this.name = name;
this.nodeSpec = nodeSpec;
this.clusterName = clusterName;
@@ -95,7 +95,7 @@ public class SearchNode extends AbstractService implements
this.tuning = tuning;
this.resourceLimits = resourceLimits;
this.fractionOfMemoryReserved = fractionOfMemoryReserved;
- this.redundancy = redundancy;
+ this.redundancyProvider = redundancyprovider;
}
@Override
@@ -103,7 +103,7 @@ public class SearchNode extends AbstractService implements
Element producerSpec) {
return SearchNode.create(ancestor, name, contentNode.getDistributionKey(), nodeSpec, clusterName, contentNode,
flushOnShutdown, tuning, resourceLimits, deployState.isHosted(),
- fractionOfMemoryReserved, redundancy, deployState.featureFlags());
+ fractionOfMemoryReserved, redundancyProvider, deployState.featureFlags());
}
}
@@ -111,10 +111,10 @@ public class SearchNode extends AbstractService implements
public static SearchNode create(TreeConfigProducer<?> parent, String name, int distributionKey, NodeSpec nodeSpec,
String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown,
Optional<Tuning> tuning, Optional<ResourceLimits> resourceLimits,
- boolean isHostedVespa, double fractionOfMemoryReserved, Redundancy redundancy,
+ boolean isHostedVespa, double fractionOfMemoryReserved, Redundancy.Provider redundancyProvider,
ModelContext.FeatureFlags featureFlags) {
SearchNode node = new SearchNode(parent, name, distributionKey, nodeSpec, clusterName, serviceLayerService, flushOnShutdown,
- tuning, resourceLimits, isHostedVespa, fractionOfMemoryReserved, redundancy);
+ tuning, resourceLimits, isHostedVespa, fractionOfMemoryReserved, redundancyProvider);
if (featureFlags.loadCodeAsHugePages()) {
node.addEnvironmentVariable("VESPA_LOAD_CODE_AS_HUGEPAGES", true);
}
@@ -127,7 +127,7 @@ public class SearchNode extends AbstractService implements
private SearchNode(TreeConfigProducer<?> parent, String name, int distributionKey, NodeSpec nodeSpec,
String clusterName, AbstractService serviceLayerService, boolean flushOnShutdown,
Optional<Tuning> tuning, Optional<ResourceLimits> resourceLimits, boolean isHostedVespa,
- double fractionOfMemoryReserved, Redundancy redundancy) {
+ double fractionOfMemoryReserved, Redundancy.Provider redundancyProvider) {
super(parent, name);
this.distributionKey = distributionKey;
this.serviceLayerService = serviceLayerService;
@@ -144,7 +144,7 @@ public class SearchNode extends AbstractService implements
// Properties are set in DomSearchBuilder
this.tuning = tuning;
this.resourceLimits = resourceLimits;
- this.redundancy = redundancy;
+ this.redundancyProvider = redundancyProvider;
setPropertiesElastic(clusterName, distributionKey);
addEnvironmentVariable("OMP_NUM_THREADS", 1);
}
@@ -286,7 +286,7 @@ public class SearchNode extends AbstractService implements
if (nodeResources.isPresent()) {
var nodeResourcesTuning = new NodeResourcesTuning(nodeResources.get(),
tuning.map(Tuning::threadsPerSearch).orElse(1),
- fractionOfMemoryReserved, redundancy);
+ fractionOfMemoryReserved, redundancyProvider.redundancy());
nodeResourcesTuning.getConfig(builder);
tuning.ifPresent(t -> t.getConfig(builder));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
index b357a3e6718..191fc9e63bb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
@@ -50,7 +50,7 @@ public class SearchNodeTest {
private static SearchNode createSearchNode(MockRoot root, String name, int distributionKey, NodeSpec nodeSpec,
boolean flushOnShutDown, boolean isHosted, ModelContext.FeatureFlags featureFlags) {
return SearchNode.create(root, name, distributionKey, nodeSpec, "mycluster", null, flushOnShutDown,
- Optional.empty(), Optional.empty(), isHosted, 0.0, new Redundancy(1,1,1,1,1), featureFlags);
+ Optional.empty(), Optional.empty(), isHosted, 0.0, () -> new Redundancy(1,1,1,1,1), featureFlags);
}
private static SearchNode createSearchNode(MockRoot root) {