diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-10-26 09:17:05 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2018-10-26 09:17:05 +0200 |
commit | f99c5ee981cac149023f9ba1c04e947ae2a3ab2a (patch) | |
tree | 55362a2142020d02b591ba2770d28714a819036e | |
parent | 5c771a79843d6ed595c8d419f7ad4ffc42c0fbf7 (diff) |
Refactor: Move qrstart config generation from ContainerSearh to ContainerCluster.
6 files changed, 36 insertions, 44 deletions
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 fff339e6692..ccd828b5f48 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 @@ -14,6 +14,9 @@ import com.yahoo.config.docproc.SchemamappingConfig; import com.yahoo.config.model.ApplicationConfigProducerRoot; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; +import com.yahoo.config.provision.Environment; +import com.yahoo.config.provision.RegionName; +import com.yahoo.config.provision.SystemName; import com.yahoo.config.provision.Zone; import com.yahoo.container.BundlesConfig; import com.yahoo.container.ComponentsConfig; @@ -141,7 +144,7 @@ public final class ContainerCluster public static final String STATISTICS_HANDLER_CLASS = "com.yahoo.container.config.StatisticsRequestHandler"; public static final String SIMPLE_LINGUISTICS_PROVIDER = "com.yahoo.language.provider.SimpleLinguisticsProvider"; public static final String CMS = "-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=15 -XX:NewRatio=1"; - public static final String G1GC = "-XX:+UseG1GC -XX:MaxTenuringThreshold=15"; + static final String G1GC = "-XX:+UseG1GC -XX:MaxTenuringThreshold=15"; public static final String ROOT_HANDLER_BINDING = "*://*/"; @@ -628,9 +631,33 @@ public final class ContainerCluster if (containerSearch!=null) containerSearch.getConfig(builder); } + private String buildGCOpts(Zone zone) { + Optional<String> gcopts = getGCOpts(); + if (gcopts.isPresent()) { + return gcopts.get(); + } else if (zone.system() == SystemName.dev) { + return G1GC; + } else if (isHostedVespa()) { + return ((zone.environment() != Environment.prod) || RegionName.from("us-east-3").equals(zone.region())) + ? G1GC : CMS; + } else { + return CMS; + } + } + @Override public void getConfig(QrStartConfig.Builder builder) { - if (containerSearch!=null) containerSearch.getConfig(builder); + QrStartConfig.Jvm.Builder jvmBuilder = new QrStartConfig.Jvm.Builder(); + if (getMemoryPercentage().isPresent()) { + jvmBuilder.heapSizeAsPercentageOfPhysicalMemory(getMemoryPercentage().get()); + } else if (isHostedVespa()) { + jvmBuilder.heapSizeAsPercentageOfPhysicalMemory(getHostClusterId().isPresent() ? 17 : 60); + } + if (containerSearch!=null) { + jvmBuilder.directMemorySizeCache(containerSearch.totalCacheSizeMb()); + } + jvmBuilder.gcopts(buildGCOpts(getZone())); + builder.jvm(jvmBuilder); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java index 46fcf38b7e9..3a7b7864554 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java @@ -1,10 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.container.search; -import com.yahoo.config.provision.Environment; -import com.yahoo.config.provision.RegionName; -import com.yahoo.config.provision.SystemName; -import com.yahoo.config.provision.Zone; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.prelude.fastsearch.FS4ResourcePool; @@ -16,7 +12,6 @@ import com.yahoo.vespa.model.container.search.searchchain.HttpProvider; import com.yahoo.vespa.model.container.search.searchchain.LocalProvider; import com.yahoo.vespa.model.container.search.searchchain.SearchChains; import com.yahoo.search.config.IndexInfoConfig; -import com.yahoo.search.config.QrStartConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig; import com.yahoo.container.QrSearchersConfig; import com.yahoo.search.query.profile.config.QueryProfilesConfig; @@ -30,7 +25,6 @@ import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Optional; /** * @author gjoranv @@ -41,7 +35,6 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains> IndexInfoConfig.Producer, IlscriptsConfig.Producer, QrSearchersConfig.Producer, - QrStartConfig.Producer, QueryProfilesConfig.Producer, SemanticRulesConfig.Producer, PageTemplatesConfig.Producer { @@ -52,12 +45,10 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains> private QueryProfiles queryProfiles; private SemanticRules semanticRules; private PageTemplates pageTemplates; - private final ContainerCluster owningCluster; public ContainerSearch(ContainerCluster cluster, SearchChains chains, Options options) { super(chains); this.options = options; - this.owningCluster = cluster; cluster.addComponent(getFS4ResourcePool()); } @@ -119,33 +110,7 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains> if (pageTemplates!=null) pageTemplates.getConfig(builder); } - private String buildGCOpts(Zone zone) { - Optional<String> gcopts = owningCluster.getGCOpts(); - if (gcopts.isPresent()) { - return gcopts.get(); - } else if (zone.system() == SystemName.dev) { - return ContainerCluster.G1GC; - } else if (owningCluster.isHostedVespa()) { - return ((zone.environment() != Environment.prod) || RegionName.from("us-east-3").equals(zone.region())) - ? ContainerCluster.G1GC : ContainerCluster.CMS; - } else { - return ContainerCluster.CMS; - } - } - - @Override - public void getConfig(QrStartConfig.Builder qsB) { - QrStartConfig.Jvm.Builder internalBuilder = new QrStartConfig.Jvm.Builder(); - if (owningCluster.getMemoryPercentage().isPresent()) { - internalBuilder.heapSizeAsPercentageOfPhysicalMemory(owningCluster.getMemoryPercentage().get()); - } else if (owningCluster.isHostedVespa()) { - internalBuilder.heapSizeAsPercentageOfPhysicalMemory(owningCluster.getHostClusterId().isPresent() ? 17 : 60); - } - qsB.jvm(internalBuilder.directMemorySizeCache(totalCacheSizeMb())); - qsB.jvm.gcopts(buildGCOpts(owningCluster.getZone())); - } - - private int totalCacheSizeMb() { + public int totalCacheSizeMb() { return totalHttpProviderCacheSize(); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index af5d9dd1dcf..ac1f313d983 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -468,7 +468,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { else { List<Container> nodes = createNodes(cluster, nodesElement, context); String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); - String gcopts = nodesElement.getAttribute(VespaDomBuilder.GCOPTS_ATTRIB_NAME); + String gcopts = nodesElement.hasAttribute(VespaDomBuilder.GCOPTS_ATTRIB_NAME) + ? nodesElement.getAttribute(VespaDomBuilder.GCOPTS_ATTRIB_NAME) + : null; if (incompatibleGCOptions(jvmArgs)) { context.getDeployLogger().log(Level.WARNING, "You need to move out your GC related options from 'jvmargs' to 'gcopts'"); } else { diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 839ddcecde3..8396cac265c 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -82,7 +82,6 @@ public class ModelProvisioningTest { " <nodes count=\"3\"/>" + "</jdisc>" + "<jdisc id='mydisc2' version='1.0'>" + - " <search/>" + " <document-processing/>" + " <handler id='myHandler'>" + " <component id='injected' />" + @@ -1666,7 +1665,7 @@ public class ModelProvisioningTest { private int physicalMemoryPercentage(ContainerCluster cluster) { QrStartConfig.Builder b = new QrStartConfig.Builder(); - cluster.getSearch().getConfig(b); + cluster.getConfig(b); return new QrStartConfig(b).jvm().heapSizeAsPercentageOfPhysicalMemory(); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java index 7051ffda84a..e4fb19010f5 100755 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java @@ -128,7 +128,7 @@ public class ContainerClusterTest { int expectedMemoryPercentage) { ContainerCluster cluster = createContainerCluster(createRoot(isHosted), isCombinedCluster, explicitMemoryPercentage); QrStartConfig.Builder qsB = new QrStartConfig.Builder(); - cluster.getSearch().getConfig(qsB); + cluster.getConfig(qsB); QrStartConfig qsC= new QrStartConfig(qsB); assertEquals(expectedMemoryPercentage, qsC.jvm().heapSizeAsPercentageOfPhysicalMemory()); } @@ -186,7 +186,7 @@ public class ContainerClusterTest { cluster.setGCOpts(override); assertEquals(1, cluster.getContainers().size()); QrStartConfig.Builder qsB = new QrStartConfig.Builder(); - cluster.getSearch().getConfig(qsB); + cluster.getConfig(qsB); QrStartConfig qsC= new QrStartConfig(qsB); assertEquals(expected, qsC.jvm().gcopts()); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java index b5c1f7ce26d..a3e24b8a520 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java @@ -97,7 +97,6 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { public void ignores_gcopts_on_conflicting_jvargs() { Element clusterElem = DomBuilderTest.parse( "<jdisc version='1.0'>", - " <search/>", " <nodes gcopts='-XX:+UseG1GC' jvmargs='-XX:+UseParNewGC'>", " <node hostalias='mockhost'/>", " </nodes>", |