summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-05-28 14:12:00 +0200
committerHarald Musum <musum@verizonmedia.com>2021-05-28 14:12:00 +0200
commita736481cef5563a32be064c9762eaa4deda91987 (patch)
treef5a85a13d01780dfabe932fdabbe94d6752d7419 /config-model
parent8d86fe0d7b23871ed643ba592423e92d7b86d024 (diff)
Throw exception if resource-limits is specified
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java28
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java7
5 files changed, 22 insertions, 44 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
index 70f2acd3c7b..66640d4b2dc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ClusterResourceLimits.java
@@ -1,7 +1,6 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.cluster.DomResourceLimitsBuilder;
@@ -37,14 +36,12 @@ public class ClusterResourceLimits {
private final boolean enableFeedBlockInDistributor;
private final boolean hostedVespa;
- private final DeployLogger deployLogger;
private ResourceLimits.Builder ctrlBuilder = new ResourceLimits.Builder();
private ResourceLimits.Builder nodeBuilder = new ResourceLimits.Builder();
- public Builder(boolean enableFeedBlockInDistributor, boolean hostedVespa, DeployLogger deployLogger) {
+ public Builder(boolean enableFeedBlockInDistributor, boolean hostedVespa) {
this.enableFeedBlockInDistributor = enableFeedBlockInDistributor;
this.hostedVespa = hostedVespa;
- this.deployLogger = deployLogger;
}
public ClusterResourceLimits build(ModelElement clusterElem) {
@@ -58,7 +55,7 @@ public class ClusterResourceLimits {
private ResourceLimits.Builder createBuilder(ModelElement element) {
return element == null
? new ResourceLimits.Builder()
- : DomResourceLimitsBuilder.createBuilder(element, hostedVespa, deployLogger);
+ : DomResourceLimitsBuilder.createBuilder(element, hostedVespa);
}
public void setClusterControllerBuilder(ResourceLimits.Builder builder) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index b5cae857ce0..830eced56d3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -2,12 +2,10 @@
package com.yahoo.vespa.model.content.cluster;
import com.google.common.base.Preconditions;
-import com.google.common.collect.Sets;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
@@ -47,7 +45,6 @@ import com.yahoo.vespa.model.content.IndexedHierarchicDistributionValidator;
import com.yahoo.vespa.model.content.Redundancy;
import com.yahoo.vespa.model.content.ReservedDocumentTypeNameValidator;
import com.yahoo.vespa.model.content.StorageGroup;
-import com.yahoo.vespa.model.content.StorageNode;
import com.yahoo.vespa.model.content.engines.PersistenceEngine;
import com.yahoo.vespa.model.content.engines.ProtonEngine;
import com.yahoo.vespa.model.content.storagecluster.StorageCluster;
@@ -64,7 +61,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Level;
-import java.util.stream.Collectors;
import static java.util.stream.Collectors.toList;
@@ -133,9 +129,7 @@ public class ContentCluster extends AbstractConfigProducer implements
globallyDistributedDocuments, routingSelection,
deployState.zone(), deployState.isHosted());
boolean enableFeedBlockInDistributor = deployState.getProperties().featureFlags().enableFeedBlockInDistributor();
- var resourceLimits = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
- stateIsHosted(deployState),
- deployState.getDeployLogger())
+ var resourceLimits = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, stateIsHosted(deployState))
.build(contentElement);
c.clusterControllerConfig = new ClusterControllerConfig.Builder(getClusterId(contentElement),
contentElement,
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
index 9f4852629d0..f65c67de07d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/DomResourceLimitsBuilder.java
@@ -1,12 +1,9 @@
-// Copyright 2017 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.vespa.model.content.cluster;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.content.ResourceLimits;
-import java.util.logging.Level;
-
/**
* Builder for feed block resource limits.
*
@@ -14,18 +11,13 @@ import java.util.logging.Level;
*/
public class DomResourceLimitsBuilder {
- public static ResourceLimits.Builder createBuilder(ModelElement contentXml, boolean hostedVespa, DeployLogger deployLogger) {
+ public static ResourceLimits.Builder createBuilder(ModelElement contentXml, boolean hostedVespa) {
ResourceLimits.Builder builder = new ResourceLimits.Builder();
ModelElement resourceLimits = contentXml.child("resource-limits");
if (resourceLimits == null) { return builder; }
- if (hostedVespa) {
- deployLogger.logApplicationPackage(Level.WARNING, "Element " + resourceLimits +
- " is not allowed, default limits will be used");
- // TODO: Throw exception when we are sure nobody is using this
- //throw new IllegalArgumentException("Element " + element + " is not allowed to be set, default limits will be used");
- return builder;
- }
+ if (hostedVespa) throw new IllegalArgumentException("Element '" + resourceLimits + "' is not allowed to be set");
+
if (resourceLimits.child("disk") != null) {
builder.setDiskLimit(resourceLimits.childAsDouble("disk"));
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
index 469e4649c14..8e7b1a27d36 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java
@@ -1,15 +1,15 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
-import com.yahoo.searchdefinition.derived.TestableDeployLogger;
import com.yahoo.text.XML;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import java.util.Optional;
+import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -48,13 +48,16 @@ public class ClusterResourceLimitsTest {
return this;
}
public ClusterResourceLimits build() {
- var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, false, new BaseDeployLogger());
+ var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, false);
builder.setClusterControllerBuilder(ctrlBuilder);
builder.setContentNodeBuilder(nodeBuilder);
return builder.build();
}
}
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Test
public void content_node_limits_are_derived_from_cluster_controller_limits_if_not_set() {
assertLimits(0.4, 0.7, 0.7, 0.85,
@@ -120,13 +123,14 @@ public class ClusterResourceLimitsTest {
}
@Test
- // TODO: Change to expect exception being thrown when no one uses this in hosted
- public void default_resource_limits_when_hosted_and_warning_is_logged() {
- TestableDeployLogger logger = new TestableDeployLogger();
+ public void exception_is_thrown_when_resource_limits_are_specified() {
final boolean hosted = true;
- ClusterResourceLimits.Builder builder = new ClusterResourceLimits.Builder(true, hosted, logger);
- ClusterResourceLimits limits = builder.build(new ModelElement(XML.getDocument("<cluster id=\"test\">" +
+ expectedException.expect(IllegalArgumentException.class);
+ expectedException.expectMessage(containsString("Element 'resource-limits' is not allowed to be set"));
+
+ ClusterResourceLimits.Builder builder = new ClusterResourceLimits.Builder(true, hosted);
+ builder.build(new ModelElement(XML.getDocument("<cluster id=\"test\">" +
" <tuning>\n" +
" <resource-limits>\n" +
" <memory>0.92</memory>\n" +
@@ -134,12 +138,6 @@ public class ClusterResourceLimitsTest {
" </tuning>\n" +
"</cluster>")
.getDocumentElement()));
-
- assertLimits(0.8, 0.8, limits.getClusterControllerLimits());
- assertLimits(0.9, 0.9, limits.getContentNodeLimits());
-
- assertEquals(1, logger.warnings.size());
- assertEquals("Element resource-limits is not allowed, default limits will be used", logger.warnings.get(0));
}
private void assertLimits(Double expCtrlDisk, Double expCtrlMemory, Double expNodeDisk, Double expNodeMemory, Fixture f) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
index 22e38b30959..c713414d043 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java
@@ -1,12 +1,11 @@
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
-import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.text.XML;
+import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import org.junit.Test;
import org.w3c.dom.Document;
@@ -24,9 +23,7 @@ public class FleetControllerClusterTest {
var clusterElement = new ModelElement(doc.getDocumentElement());
return new ClusterControllerConfig.Builder("storage",
clusterElement,
- new ClusterResourceLimits.Builder(enableFeedBlockInDistributor,
- false,
- new BaseDeployLogger())
+ new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, false)
.build(clusterElement).getClusterControllerLimits())
.build(root.getDeployState(), root, clusterElement.getXml());
}