summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
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.java14
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/ClusterControllerTestCase.java48
4 files changed, 67 insertions, 6 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 58e5ccd7c3a..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
@@ -1,9 +1,11 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin.clustercontroller;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.api.Reindexing;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.search.config.QrStartConfig;
import com.yahoo.vespa.model.container.ContainerCluster;
/**
@@ -14,12 +16,14 @@ import com.yahoo.vespa.model.container.ContainerCluster;
*/
public class ClusterControllerContainerCluster extends ContainerCluster<ClusterControllerContainer> {
+ private final ModelContext.FeatureFlags featureFlags;
private final ReindexingContext reindexingContext;
public ClusterControllerContainerCluster(
AbstractConfigProducer<?> parent, String subId, String name, DeployState deployState) {
super(parent, subId, name, deployState, false);
addDefaultHandlersWithVip();
+ this.featureFlags = deployState.featureFlags();
this.reindexingContext = createReindexingContext(deployState);
}
@@ -28,6 +32,16 @@ public class ClusterControllerContainerCluster extends ContainerCluster<ClusterC
@Override protected boolean messageBusEnabled() { return false; }
+ @Override
+ public void getConfig(QrStartConfig.Builder builder) {
+ super.getConfig(builder);
+ int maxHeapSize = featureFlags.clusterControllerMaxHeapSizeInMb();
+ boolean verboseGc = (maxHeapSize < 512);
+ builder.jvm
+ .verbosegc(verboseGc)
+ .heapsize(maxHeapSize);
+ }
+
public ReindexingContext reindexingContext() { return reindexingContext; }
private static ReindexingContext createReindexingContext(DeployState deployState) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index 26612f7a420..5e9125f560d 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -620,6 +620,8 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public void setEnvironmentVars(String environmentVars) { this.environmentVars = environmentVars; }
+ public String getEnvironmentVars() { return environmentVars; }
+
public Optional<String> getJvmGCOptions() { return Optional.ofNullable(jvmGCOptions); }
public final void setRpcServerEnabled(boolean rpcServerEnabled) { this.rpcServerEnabled = rpcServerEnabled; }
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;