diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2018-11-02 14:23:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-02 14:23:17 +0100 |
commit | d4572d3347aafa7061ed6104eb56ec5d63e7e9f8 (patch) | |
tree | 5e956639d7e34b696d023b43095555afa7e5f306 | |
parent | d62eabd50a4c05684eca03f41eac6b20b0976950 (diff) | |
parent | 28a18330555aa76601cacc1ec4244e0360aa68d4 (diff) |
Merge pull request #7551 from vespa-engine/balder/jvmargs-2-jvm-options
Add jvm-options and prefer over jvmargs
15 files changed, 144 insertions, 65 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java index fcd9df309a4..60a49598c42 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java @@ -47,9 +47,9 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon /** The ports allocated to this Service. */ private List<Integer> ports = new ArrayList<>(); - /** The optional JVM execution args for this Service. */ + /** The optional JVM execution options for this Service. */ // Please keep non-null, as passed to command line in service startup - private String jvmArgs = ""; + private String jvmOptions = ""; /** The optional PRELOAD libraries for this Service. */ // Please keep non-null, as passed to command line in service startup @@ -399,23 +399,23 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon } /** Optional execution args for this service */ - public String getJvmArgs() { - return jvmArgs; + public String getJvmOptions() { + return jvmOptions; } - public void setJvmArgs(String args) { - jvmArgs = (args == null) ? "" : args; + public void setJvmOptions(String args) { + jvmOptions = (args == null) ? "" : args; } - public void appendJvmArgs(String args) { + public void appendJvmOptions(String args) { if ((args != null) && ! "".equals(args)) { - setJvmArgs(jvmArgs + getSeparator(jvmArgs) + args); + setJvmOptions(jvmOptions + getSeparator(jvmOptions) + args); } } private static String getSeparator(String current) { return ("".equals(current)) ? "" : " "; } - public void prependJvmArgs(String args) { + public void prependJvmOptions(String args) { if ((args != null) && ! "".equals(args)) { - setJvmArgs(args + getSeparator(jvmArgs) + jvmArgs); + setJvmOptions(args + getSeparator(jvmOptions) + jvmOptions); } } public String getPreLoad() { return preload; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/Service.java index 29ec26b06d2..d5d33a08b5d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/Service.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/Service.java @@ -98,8 +98,8 @@ public interface Service extends ConfigProducer { */ String getHostName(); - /** Optional JVM execution args for this service */ - String getJvmArgs(); + /** Optional JVM execution options for this service */ + String getJvmOptions(); /** * Computes and returns the i'th port for this service, based on diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java index 8b98dc9d06a..c354445b690 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Logserver.java @@ -29,7 +29,7 @@ public class Logserver extends AbstractService { * @return the startup command for the logserver */ public String getStartupCommand() { - return "exec $ROOT/bin/vespa-logserver-start " + getMyJVMArgs() + " " + getJvmArgs(); + return "exec $ROOT/bin/vespa-logserver-start " + getMyJVMArgs() + " " + getJvmOptions(); } /** diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java index 01dd6495d13..6a02619bdb4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomV20ClientsBuilder.java @@ -75,7 +75,7 @@ public class DomV20ClientsBuilder { int index = clients.getVespaSpoolers().size(); VespaSpoolerService spoolerService = new VespaSpoolerServiceBuilder(index, new VespaSpooler(feederConfig, spoolConfig)). build(deployState, spoolerCfg, e); - if ("".equals(spoolerService.getJvmArgs()) && jvmArgs!=null) spoolerService.setJvmArgs(jvmArgs); + if ("".equals(spoolerService.getJvmOptions()) && jvmArgs!=null) spoolerService.setJvmOptions(jvmArgs); spoolerService.setProp("index", String.valueOf(index)); clients.getVespaSpoolers().add(spoolerService); } else { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java index c022f20db70..a6d3809ff64 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java @@ -44,6 +44,7 @@ import java.util.logging.Logger; public class VespaDomBuilder extends VespaModelBuilder { public static final String JVMARGS_ATTRIB_NAME = "jvmargs"; + public static final String JVM_OPTIONS = "jvm-options"; public static final String JVM_GC_OPTIONS = "jvm-gc-options"; public static final String PRELOAD_ATTRIB_NAME = "preload"; // Intended for vespa engineers public static final String MMAP_NOCORE_LIMIT = "mmap-core-limit"; // Intended for vespa engineers @@ -143,8 +144,12 @@ public class VespaDomBuilder extends VespaModelBuilder { { initializeProducer(t, deployState, producerSpec); if (producerSpec != null) { - if (producerSpec.hasAttribute(JVMARGS_ATTRIB_NAME)) { - t.appendJvmArgs(producerSpec.getAttribute(JVMARGS_ATTRIB_NAME)); + if (producerSpec.hasAttribute(JVM_OPTIONS)) { + t.appendJvmOptions(producerSpec.getAttribute(JVM_OPTIONS)); + } else { + if (producerSpec.hasAttribute(JVMARGS_ATTRIB_NAME)) { + t.appendJvmOptions(producerSpec.getAttribute(JVMARGS_ATTRIB_NAME)); + } } if (producerSpec.hasAttribute(PRELOAD_ATTRIB_NAME)) { t.setPreLoad(producerSpec.getAttribute(PRELOAD_ATTRIB_NAME)); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/VespaSpoolerService.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/VespaSpoolerService.java index f4287cf982e..378c85dc325 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/clients/VespaSpoolerService.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/VespaSpoolerService.java @@ -26,7 +26,7 @@ public class VespaSpoolerService extends AbstractService implements SpoolerConfi } public String getStartupCommand() { - return "exec vespaspooler "+getJvmArgs(); + return "exec vespaspooler "+ getJvmOptions(); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java index ab65c68dea4..e098263119c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java @@ -295,7 +295,7 @@ public class Container extends AbstractService implements } public String getStartupCommand() { - return "PRELOAD=" + getPreLoad() + " exec vespa-start-container-daemon " + getJvmArgs() + " "; + return "PRELOAD=" + getPreLoad() + " exec vespa-start-container-daemon " + getJvmOptions() + " "; } @Override @@ -315,15 +315,15 @@ public class Container extends AbstractService implements /** Returns the jvm arguments this should start with */ @Override - public String getJvmArgs() { - String jvmArgs = super.getJvmArgs(); + public String getJvmOptions() { + String jvmArgs = super.getJvmOptions(); return isHostedVespa && hasDocproc() ? ("".equals(jvmArgs) ? defaultHostedJVMArgs : defaultHostedJVMArgs + " " + jvmArgs) : jvmArgs; } /** Returns the jvm args set explicitly for this node */ - public String getAssignedJvmArgs() { return super.getJvmArgs(); } + public String getAssignedJvmOptions() { return super.getJvmOptions(); } private String serviceSlobrokId() { return "vespa/service/" + getConfigId(); 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 5f9b3e875e6..91df3fee6e8 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 @@ -471,6 +471,24 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { return ContainerCluster.CMS; } } + private String getJvmOptions(ContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) { + String jvmOptions = ""; + if (nodesElement.hasAttribute(VespaDomBuilder.JVM_OPTIONS)) { + jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVM_OPTIONS); + if (nodesElement.hasAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME)) { + String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); + throw new IllegalArgumentException("You have specified both jvm-options='" + jvmOptions + "'" + + " and deprecated jvmargs='" + jvmArgs + "'. Merge jvmargs into jvm-options."); + } + } else { + jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); + if (incompatibleGCOptions(jvmOptions)) { + deployLogger.log(Level.WARNING, "You need to move out your GC related options from 'jvmargs' to 'jvm-gc-options'"); + cluster.setJvmGCOptions(ContainerCluster.CMS); + } + } + return jvmOptions; + } private void addNodesFromXml(ContainerCluster cluster, Element containerElement, ConfigModelContext context) { Element nodesElement = XML.getChild(containerElement, "nodes"); if (nodesElement == null) { // default single node on localhost @@ -479,20 +497,17 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { node.setHostResource(host); node.initService(context.getDeployLogger()); cluster.addContainers(Collections.singleton(node)); - } - else { + } else { List<Container> nodes = createNodes(cluster, nodesElement, context); - String jvmArgs = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); - String jvmGCOptions = nodesElement.hasAttribute(VespaDomBuilder.JVM_GC_OPTIONS) - ? nodesElement.getAttribute(VespaDomBuilder.JVM_GC_OPTIONS) - : null; - if (incompatibleGCOptions(jvmArgs)) { - context.getDeployLogger().log(Level.WARNING, "You need to move out your GC related options from 'jvmargs' to 'jvm-gc-options'"); - cluster.setJvmGCOptions(ContainerCluster.CMS); - } else { + applyNodesTagJvmArgs(nodes, getJvmOptions(cluster, nodesElement, context.getDeployLogger())); + + if ( !cluster.getJvmGCOptions().isPresent()) { + String jvmGCOptions = nodesElement.hasAttribute(VespaDomBuilder.JVM_GC_OPTIONS) + ? nodesElement.getAttribute(VespaDomBuilder.JVM_GC_OPTIONS) + : null; cluster.setJvmGCOptions(buildJvmGCOptions(context.getDeployState().zone(), jvmGCOptions, context.getDeployState().isHosted())); } - applyNodesTagJvmArgs(nodes, jvmArgs); + applyRoutingAliasProperties(nodes, cluster); applyDefaultPreload(nodes, nodesElement); applyMemoryPercentage(cluster, nodesElement.getAttribute(VespaDomBuilder.Allocated_MEMORY_ATTRIB_NAME)); @@ -693,8 +708,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { private void applyNodesTagJvmArgs(List<Container> containers, String jvmArgs) { for (Container container: containers) { - if (container.getAssignedJvmArgs().isEmpty()) - container.prependJvmArgs(jvmArgs); + if (container.getAssignedJvmOptions().isEmpty()) + container.prependJvmOptions(jvmArgs); } } diff --git a/config-model/src/main/resources/schema/common.rnc b/config-model/src/main/resources/schema/common.rnc index 32ba67b6429..73882da2b01 100644 --- a/config-model/src/main/resources/schema/common.rnc +++ b/config-model/src/main/resources/schema/common.rnc @@ -2,6 +2,7 @@ service.attlist &= attribute hostalias { xsd:NCName } service.attlist &= attribute baseport { xsd:unsignedShort }? service.attlist &= attribute jvmargs { text }? +service.attlist &= attribute jvm-options { text }? service.attlist &= attribute jvm-gc-options { text }? # preload is for internal use only service.attlist &= attribute preload { text }? diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc index 9acb9daaba5..5dbcffce736 100644 --- a/config-model/src/main/resources/schema/containercluster.rnc +++ b/config-model/src/main/resources/schema/containercluster.rnc @@ -211,6 +211,7 @@ DocumentApi = element document-api { NodesOfContainerCluster = element nodes { attribute jvmargs { text }? & + attribute jvm-options { text }? & attribute jvm-gc-options { text }? & attribute preload { text }? & attribute allocated-memory { text }? & 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 743dfc5ca73..f9585224bd6 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 @@ -86,7 +86,7 @@ public class ModelProvisioningTest { " <handler id='myHandler'>" + " <component id='injected' />" + " </handler>" + - " <nodes count='2' allocated-memory='45%' jvm-gc-options='-XX:+UseParNewGC' jvmargs='-verbosegc' preload='lib/blablamalloc.so'/>" + + " <nodes count='2' allocated-memory='45%' jvm-gc-options='-XX:+UseParNewGC' jvm-options='-verbosegc' preload='lib/blablamalloc.so'/>" + "</jdisc>" + "</services>"; String hosts ="<hosts>" @@ -127,16 +127,16 @@ public class ModelProvisioningTest { assertThat(mydisc2.getContainers().get(1).getConfigId(), is("mydisc2/container.1")); assertTrue(mydisc2.getContainers().get(1).isInitialized()); - assertThat(mydisc.getContainers().get(0).getJvmArgs(), is("")); - assertThat(mydisc.getContainers().get(1).getJvmArgs(), is("")); - assertThat(mydisc.getContainers().get(2).getJvmArgs(), is("")); + assertThat(mydisc.getContainers().get(0).getJvmOptions(), is("")); + assertThat(mydisc.getContainers().get(1).getJvmOptions(), is("")); + assertThat(mydisc.getContainers().get(2).getJvmOptions(), is("")); assertThat(mydisc.getContainers().get(0).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so"))); assertThat(mydisc.getContainers().get(1).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so"))); assertThat(mydisc.getContainers().get(2).getPreLoad(), is(getDefaults().underVespaHome("lib64/vespa/malloc/libvespamalloc.so"))); assertThat(mydisc.getMemoryPercentage(), is(Optional.empty())); - assertThat(mydisc2.getContainers().get(0).getJvmArgs(), is("-verbosegc")); - assertThat(mydisc2.getContainers().get(1).getJvmArgs(), is("-verbosegc")); + assertThat(mydisc2.getContainers().get(0).getJvmOptions(), is("-verbosegc")); + assertThat(mydisc2.getContainers().get(1).getJvmOptions(), is("-verbosegc")); assertThat(mydisc2.getContainers().get(0).getPreLoad(), is("lib/blablamalloc.so")); assertThat(mydisc2.getContainers().get(1).getPreLoad(), is("lib/blablamalloc.so")); assertThat(mydisc2.getMemoryPercentage(), is(Optional.of(45))); @@ -261,13 +261,13 @@ public class ModelProvisioningTest { } @Test - public void testCombinedClusterWithJvmArgs() { + public void testCombinedClusterWithJvmOptions() { String xmlWithNodes = "<?xml version='1.0' encoding='utf-8' ?>" + "<services>" + " <container version='1.0' id='container1'>" + " <document-processing/>" + - " <nodes of='content1' jvmargs='testarg'/>" + + " <nodes of='content1' jvm-options='testoption'/>" + " </container>" + " <content version='1.0' id='content1'>" + " <redundancy>2</redundancy>" + @@ -284,7 +284,7 @@ public class ModelProvisioningTest { assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size()); assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size()); for (Container container : model.getContainerClusters().get("container1").getContainers()) - assertTrue(container.getJvmArgs().contains("testarg")); + assertTrue(container.getJvmOptions().contains("testoption")); } @Test @@ -1225,6 +1225,58 @@ public class ModelProvisioningTest { } @Test + public void testJvmArgs() { + String services = + "<?xml version='1.0' encoding='utf-8' ?>\n" + + "<jdisc version='1.0'>" + + " <search/>" + + " <nodes jvmargs='xyz' count='3'/>" + + "</jdisc>"; + int numberOfHosts = 3; + VespaModelTester tester = new VespaModelTester(); + tester.addHosts(numberOfHosts); + VespaModel model = tester.createModel(services, true); + assertEquals(numberOfHosts, model.getRoot().getHostSystem().getHosts().size()); + assertEquals("xyz", model.getContainerClusters().get("jdisc").getContainers().get(0).getAssignedJvmOptions()); + } + + @Test + public void testJvmOptions() { + String services = + "<?xml version='1.0' encoding='utf-8' ?>\n" + + "<jdisc version='1.0'>" + + " <search/>" + + " <nodes jvm-options='xyz' count='3'/>" + + "</jdisc>"; + int numberOfHosts = 3; + VespaModelTester tester = new VespaModelTester(); + tester.addHosts(numberOfHosts); + VespaModel model = tester.createModel(services, true); + assertEquals(numberOfHosts, model.getRoot().getHostSystem().getHosts().size()); + assertEquals("xyz", model.getContainerClusters().get("jdisc").getContainers().get(0).getAssignedJvmOptions()); + } + + @Test + public void testJvmOptionsOverridesJvmArgs() { + String services = + "<?xml version='1.0' encoding='utf-8' ?>\n" + + "<jdisc version='1.0'>" + + " <search/>" + + " <nodes jvm-options='xyz' jvmargs='abc' count='3'/>" + + "</jdisc>"; + int numberOfHosts = 3; + VespaModelTester tester = new VespaModelTester(); + tester.addHosts(numberOfHosts); + try { + tester.createModel(services, true); + fail("Expected exception"); + } + catch (IllegalArgumentException e) { + assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. Merge jvmargs into jvm-options.", e.getMessage()); + } + } + + @Test public void testUsingHostaliasWithProvisioner() { String services = "<?xml version='1.0' encoding='utf-8' ?>\n" + @@ -1418,7 +1470,7 @@ public class ModelProvisioningTest { " <document-processing/>\n" + " <document-api/>\n" + " <search/>\n" + - " <nodes jvmargs=\"-Xms512m -Xmx512m\">\n" + + " <nodes jvm-options=\"-Xms512m -Xmx512m\">\n" + " <node hostalias=\"vespa-1\"/>\n" + " </nodes>\n" + " </container>\n" + @@ -1477,7 +1529,7 @@ public class ModelProvisioningTest { " <document-processing/>\n" + " <document-api/>\n" + " <search/>\n" + - " <nodes jvmargs=\"-Xms512m -Xmx512m\">\n" + + " <nodes jvm-options=\"-Xms512m -Xmx512m\">\n" + " <node hostalias=\"vespa-1\"/>\n" + " <node hostalias=\"vespa-2\"/>\n" + " <node hostalias=\"vespa-3\"/>\n" + 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 c9d89a50449..b4dea09010d 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 @@ -168,15 +168,15 @@ public class ContainerClusterTest { addContainer(root.deployLogger(), cluster, "c1", "host-c1"); assertEquals(1, cluster.getContainers().size()); Container container = cluster.getContainers().get(0); - verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmArgs()); - container.setJvmArgs("initial"); - verifyJvmArgs(isHosted, hasDocProc, "initial", container.getJvmArgs()); - container.prependJvmArgs("ignored"); - verifyJvmArgs(isHosted, hasDocProc, "ignored initial", container.getJvmArgs()); - container.appendJvmArgs("override"); - verifyJvmArgs(isHosted, hasDocProc, "ignored initial override", container.getJvmArgs()); - container.setJvmArgs(null); - verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmArgs()); + verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmOptions()); + container.setJvmOptions("initial"); + verifyJvmArgs(isHosted, hasDocProc, "initial", container.getJvmOptions()); + container.prependJvmOptions("ignored"); + verifyJvmArgs(isHosted, hasDocProc, "ignored initial", container.getJvmOptions()); + container.appendJvmOptions("override"); + verifyJvmArgs(isHosted, hasDocProc, "ignored initial override", container.getJvmOptions()); + container.setJvmOptions(null); + verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmOptions()); } @Test @@ -259,10 +259,10 @@ public class ContainerClusterTest { ContainerCluster cluster = createContainerCluster(root, false); addContainer(root.deployLogger(), cluster, "c1", "host-c1"); Container container = cluster.getContainers().get(0); - container.setJvmArgs(""); - String empty = container.getJvmArgs(); - container.setJvmArgs(null); - assertEquals(empty, container.getJvmArgs()); + container.setJvmOptions(""); + String empty = container.getJvmOptions(); + container.setJvmOptions(null); + assertEquals(empty, container.getJvmOptions()); } @Test 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 efa0d42f014..396fe3e0af5 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 @@ -95,12 +95,17 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { } private static void verifyIgnoreJvmGCOptions(boolean isHosted) throws IOException, SAXException { + verifyIgnoreJvmGCOptionsIfJvmArgs(isHosted, "jvmargs", ContainerCluster.CMS); + verifyIgnoreJvmGCOptionsIfJvmArgs(isHosted, "jvm-options", "-XX:+UseG1GC"); + + } + private static void verifyIgnoreJvmGCOptionsIfJvmArgs(boolean isHosted, String jvmOptionsName, String expectedGC) throws IOException, SAXException { String servicesXml = "<jdisc version='1.0'>" + - " <nodes jvm-gc-options='-XX:+UseG1GC' jvmargs='-XX:+UseParNewGC'>" + - " <node hostalias='mockhost'/>" + - " </nodes>" + - "</jdisc>"; + " <nodes jvm-gc-options='-XX:+UseG1GC' " + jvmOptionsName + "='-XX:+UseParNewGC'>" + + " <node hostalias='mockhost'/>" + + " </nodes>" + + "</jdisc>"; ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withServices(servicesXml).build(); // Need to create VespaModel to make deploy properties have effect final MyLogger logger = new MyLogger(); @@ -115,7 +120,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder(); model.getConfig(qrStartBuilder, "jdisc/container.0"); QrStartConfig qrStartConfig = new QrStartConfig(qrStartBuilder); - assertEquals(ContainerCluster.CMS, qrStartConfig.jvm().gcopts()); + assertEquals(expectedGC, qrStartConfig.jvm().gcopts()); } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java index 69e2dba556a..31c1e250183 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/StorageGroupTest.java @@ -26,7 +26,7 @@ public class StorageGroupTest { "<content id=\"storage\">\n" + " <documents/>" + " <group>\n" + - " <node jvmargs=\"foo\" hostalias=\"mockhost\" distribution-key=\"0\"/>\n" + + " <node hostalias=\"mockhost\" distribution-key=\"0\"/>\n" + " <node hostalias=\"mockhost\" distribution-key=\"1\"/>\n" + " </group>\n" + "</content>" diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml index 632abe68ab7..43a8d31e2ee 100644 --- a/config-model/src/test/schema-test-files/services.xml +++ b/config-model/src/test/schema-test-files/services.xml @@ -209,7 +209,7 @@ </server> - <nodes jvmargs="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps"> + <nodes jvm-options="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps"> <node hostalias="host1" /> <node hostalias="host1"> <server-port id="myServer" port="4090" /> |