summaryrefslogtreecommitdiffstats
path: root/config-model-api/src/main/java/com
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-11-10 13:37:28 +0100
committerMartin Polden <mpolden@mpolden.no>2021-11-10 15:43:25 +0100
commit8486945d676b0e885c1caaaa764d26e7ac2ef323 (patch)
treeb557a30ac2555b1d10d10d6be76044cd3d54a296 /config-model-api/src/main/java/com
parentc2f747cac63ae386a3c8b41674eca8c651ed0bea (diff)
Require positive weight sum in DeploymentSpec
Diffstat (limited to 'config-model-api/src/main/java/com')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
index 4ca9ee1dc2f..6f77dce8fc5 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
@@ -281,6 +281,7 @@ public class DeploymentSpecXmlReader {
List<Endpoint.Target> targets = new ArrayList<>();
if (level == Endpoint.Level.application) {
String region = requireStringAttribute("region", endpointElement);
+ int weightSum = 0;
for (var instanceElement : XML.getChildren(endpointElement, "instance")) {
String instanceName = instanceElement.getTextContent();
String weightFromAttribute = requireStringAttribute("weight", instanceElement);
@@ -291,10 +292,12 @@ public class DeploymentSpecXmlReader {
} catch (NumberFormatException e) {
throw new IllegalArgumentException(msgPrefix + "invalid weight value '" + weightFromAttribute + "'");
}
+ weightSum += weight;
targets.add(new Endpoint.Target(RegionName.from(region),
InstanceName.from(instanceName),
weight));
}
+ if (weightSum == 0) illegal(msgPrefix + "sum of all weights must be positive, got " + weightSum);
} else {
if (stringAttribute("region", endpointElement).isPresent()) illegal(msgPrefix + "invalid 'region' attribute");
for (var regionElement : XML.getChildren(endpointElement, "region")) {