summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-02-10 17:08:30 +0100
committerHarald Musum <musum@verizonmedia.com>2021-02-10 17:08:30 +0100
commit65e57d5e52bc8189c120566c9bd67c1b71384b42 (patch)
treefd736e02f1e6e1160952ff32fd35d76a511338a9 /config-model
parentef1e8a04a9cc407da5ab1a63a4e9c7b403dc4b32 (diff)
Avoid duplication when generating config and add test
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java48
3 files changed, 53 insertions, 15 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 bcf76c15fa2..397b11661e5 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
@@ -1,4 +1,4 @@
-// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
import com.google.common.collect.ImmutableList;
@@ -53,6 +53,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private boolean useBucketExecutorForLidSpaceCompact;
private boolean enableFeedBlockInDistributor = false;
private double maxDeadBytesRatio = 0.2;
+ private int clusterControllerMaxHeapSizeInMb = 512;
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -88,6 +89,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public boolean useBucketExecutorForLidSpaceCompact() { return useBucketExecutorForLidSpaceCompact; }
@Override public boolean enableFeedBlockInDistributor() { return enableFeedBlockInDistributor; }
@Override public double maxDeadBytesRatio() { return maxDeadBytesRatio; }
+ @Override public int clusterControllerMaxHeapSizeInMb() { return clusterControllerMaxHeapSizeInMb; }
public TestProperties setFeedConcurrency(double feedConcurrency) {
this.feedConcurrency = feedConcurrency;
@@ -202,6 +204,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties clusterControllerMaxHeapSizeInMb(int heapSize) {
+ clusterControllerMaxHeapSizeInMb = heapSize;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
private final String hostName;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
index ab33c647d5f..4fc73de3b48 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainerCluster.java
@@ -34,19 +34,12 @@ public class ClusterControllerContainerCluster extends ContainerCluster<ClusterC
@Override
public void getConfig(QrStartConfig.Builder builder) {
+ super.getConfig(builder);
int maxHeapSize = featureFlags.clusterControllerMaxHeapSizeInMb();
boolean verboseGc = (maxHeapSize < 512);
builder.jvm
.verbosegc(verboseGc)
- .availableProcessors(2)
- .compressedClassSpaceSize(32)
- .minHeapsize(32)
- .heapsize(maxHeapSize)
- .heapSizeAsPercentageOfPhysicalMemory(0)
- .gcopts(getJvmGCOptions().orElse(G1GC));
- if (getEnvironmentVars() != null) {
- builder.qrs.env(getEnvironmentVars());
- }
+ .heapsize(maxHeapSize);
}
public ReindexingContext reindexingContext() { return reindexingContext; }
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
index 194ebb0f3b2..e92778c11e7 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java
@@ -372,7 +372,7 @@ public class ClusterControllerTestCase extends DomBuilderTest {
"\n" +
"</services>";
- VespaModel model = createVespaModel(xml, false);
+ VespaModel model = createVespaModel(xml);
assertTrue(model.getService("admin/cluster-controllers/0").isPresent());
assertTrue(existsHostsWithClusterControllerConfigId(model));
@@ -403,6 +403,44 @@ public class ClusterControllerTestCase extends DomBuilderTest {
}
@Test
+ public void testQrStartConfigWithFeatureFlagForMaxHeap() throws Exception {
+ String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
+ "<services>\n" +
+ "\n" +
+ " <admin version=\"2.0\">\n" +
+ " <adminserver hostalias=\"configserver\" />\n" +
+ " <logserver hostalias=\"logserver\" />\n" +
+ " <slobroks>\n" +
+ " <slobrok hostalias=\"configserver\" />\n" +
+ " <slobrok hostalias=\"logserver\" />\n" +
+ " </slobroks>\n" +
+ " </admin>\n" +
+ " <content version='1.0' id='bar'>" +
+ " <redundancy>1</redundancy>\n" +
+ " <documents>" +
+ " <document type=\"type1\" mode=\"store-only\"/>\n" +
+ " </documents>\n" +
+ " <group>" +
+ " <node hostalias='node0' distribution-key='0' />" +
+ " </group>" +
+ " </content>" +
+ "\n" +
+ "</services>";
+
+ VespaModel model = createVespaModel(xml, new DeployState.Builder().properties(new TestProperties().clusterControllerMaxHeapSizeInMb(256)));
+ assertTrue(model.getService("admin/cluster-controllers/0").isPresent());
+
+ QrStartConfig.Builder qrBuilder = new QrStartConfig.Builder();
+ model.getConfig(qrBuilder, "admin/cluster-controllers/0/components/clustercontroller-bar-configurer");
+ QrStartConfig qrStartConfig = new QrStartConfig(qrBuilder);
+ // Taken from ContainerCluster
+ assertEquals(32, qrStartConfig.jvm().minHeapsize());
+ // Overridden values from ClusterControllerContainerCluster
+ assertEquals(256, qrStartConfig.jvm().heapsize());
+ assertTrue(qrStartConfig.jvm().verbosegc());
+ }
+
+ @Test
public void testUnconfiguredNoContent() throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<services>\n" +
@@ -476,21 +514,21 @@ public class ClusterControllerTestCase extends DomBuilderTest {
}
private VespaModel createVespaModel(String servicesXml) throws IOException, SAXException {
- return createVespaModel(servicesXml, false);
+ return createVespaModel(servicesXml, new DeployState.Builder().properties(new TestProperties().enableAutomaticReindexing(true)));
}
- private VespaModel createVespaModel(String servicesXml, boolean isHosted) throws IOException, SAXException {
+
+ private VespaModel createVespaModel(String servicesXml, DeployState.Builder deployStateBuilder) throws IOException, SAXException {
ApplicationPackage applicationPackage = new MockApplicationPackage.Builder()
.withServices(servicesXml)
.withSchemas(sds)
.build();
// Need to create VespaModel to make deploy properties have effect
DeployLogger logger = new DeployLoggerStub();
- VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
+ VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployStateBuilder
.applicationPackage(applicationPackage)
.reindexing(new DummyReindexing())
.deployLogger(logger)
.zone(new Zone(SystemName.cd, Environment.dev, RegionName.from("here")))
- .properties(new TestProperties().setHostedVespa(isHosted).enableAutomaticReindexing(true))
.build());
SimpleApplicationValidator.checkServices(new StringReader(servicesXml), new Version(7));
return model;