summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-10-26 09:17:05 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-10-26 09:17:05 +0200
commitf99c5ee981cac149023f9ba1c04e947ae2a3ab2a (patch)
tree55362a2142020d02b591ba2770d28714a819036e
parent5c771a79843d6ed595c8d419f7ad4ffc42c0fbf7 (diff)
Refactor: Move qrstart config generation from ContainerSearh to ContainerCluster.
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java31
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java37
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java4
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java3
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java1
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>",