diff options
author | Harald Musum <musum@yahooinc.com> | 2022-01-06 08:31:49 +0100 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-01-06 08:31:49 +0100 |
commit | a74719efbde771c979041a234442eb098edc681d (patch) | |
tree | 9c5b218a82dff8a10e6d3dc00d84d929259b9237 /config-model | |
parent | acde63829224e901a86fb2d570f707fc3065ef64 (diff) |
Warn when using 'jvmargs' or 'jvm-options' in services.xml
Log application package warning and note that those options are
deprecated and will be removed in Vespa 8
Diffstat (limited to 'config-model')
3 files changed, 23 insertions, 12 deletions
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 7f9364f904f..657eb6a29e7 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 @@ -1095,23 +1095,34 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { String jvmOptions; if (nodesElement.hasAttribute(VespaDomBuilder.JVM_OPTIONS)) { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVM_OPTIONS); - validateJvmOptions(jvmOptions); 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 + "'" + + throw new IllegalArgumentException("You have specified both deprecated jvm-options='" + jvmOptions + "'" + " and deprecated jvmargs='" + jvmArgs + - "'. Merge jvmargs into 'options' in 'jvm' element." + + "'. 'jvm-options' and 'jvmargs' are deprecated and will be removed in Vespa 8." + + " Please merge 'jvmargs' into 'options' or 'gc-options' in 'jvm' element." + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); } + if (! jvmOptions.isEmpty()) + logger.logApplicationPackage(WARNING, "'jvm-options' is deprecated and will be removed in Vespa 8." + + " Please merge 'jvm-options' into 'options' or 'gc-options' in 'jvm' element." + + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); } else { jvmOptions = nodesElement.getAttribute(VespaDomBuilder.JVMARGS_ATTRIB_NAME); - validateJvmOptions(jvmOptions); if (incompatibleGCOptions(jvmOptions)) { - logger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs' to 'gc-options' in 'jvm' element." + + logger.logApplicationPackage(WARNING, "You need to move your GC-related options from deprecated 'jvmargs'" + + " to 'gc-options' in 'jvm' element. 'jvmargs' is deprecated and will be removed in Vespa 8." + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); cluster.setJvmGCOptions(ContainerCluster.G1GC); } + if (! jvmOptions.isEmpty()) + logger.logApplicationPackage(WARNING, "'jvmargs' is deprecated and will be removed in Vespa 8." + + " Please merge 'jvmargs' into 'options' or 'gc-options' in 'jvm' element." + + " See https://docs.vespa.ai/en/reference/services-container.html#jvm"); } + + validateJvmOptions(jvmOptions); + return jvmOptions; } 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 0f3121afd24..2447709f778 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 @@ -1534,8 +1534,9 @@ public class ModelProvisioningTest { fail("Expected exception"); } catch (IllegalArgumentException e) { - assertEquals("You have specified both jvm-options='xyz' and deprecated jvmargs='abc'. " + - "Merge jvmargs into 'options' in 'jvm' element. " + + assertEquals("You have specified both deprecated jvm-options='xyz' and deprecated jvmargs='abc'. " + + "'jvm-options' and 'jvmargs' are deprecated and will be removed in Vespa 8. " + + "Please merge 'jvmargs' into 'options' or 'gc-options' in 'jvm' element. " + "See https://docs.vespa.ai/en/reference/services-container.html#jvm", e.getMessage()); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java index 5f6513f5803..cfe4b72f37d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTestBase.java @@ -9,12 +9,11 @@ import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.test.MockRoot; import com.yahoo.container.ComponentsConfig; import com.yahoo.vespa.model.VespaModel; -import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.ApplicationContainerCluster; +import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.search.ContainerSearch; -import com.yahoo.vespa.model.search.AbstractSearchCluster; import org.junit.Before; import org.w3c.dom.Element; @@ -61,7 +60,7 @@ public abstract class ContainerModelBuilderTestBase { for (Element containerElem : containerElems) { ContainerModel model = new ContainerModelBuilder(false, ContainerModelBuilder.Networking.enable) .build(deployState, vespaModel, null, root, containerElem); - ContainerCluster cluster = model.getCluster(); + ContainerCluster<?> cluster = model.getCluster(); generateDefaultSearchChains(cluster); } root.freezeModelTopology(); @@ -75,10 +74,10 @@ public abstract class ContainerModelBuilderTestBase { createModel(root, DeployState.createTestState(testLogger), null, containerElems); } - private static void generateDefaultSearchChains(ContainerCluster cluster) { + private static void generateDefaultSearchChains(ContainerCluster<?> cluster) { ContainerSearch search = cluster.getSearch(); if (search != null) - search.initializeSearchChains(Collections.<String, AbstractSearchCluster>emptyMap()); + search.initializeSearchChains(Collections.emptyMap()); } @Before |