diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-02-10 17:08:30 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-02-10 17:08:30 +0100 |
commit | 65e57d5e52bc8189c120566c9bd67c1b71384b42 (patch) | |
tree | fd736e02f1e6e1160952ff32fd35d76a511338a9 /config-model | |
parent | ef1e8a04a9cc407da5ab1a63a4e9c7b403dc4b32 (diff) |
Avoid duplication when generating config and add test
Diffstat (limited to 'config-model')
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; |