diff options
Diffstat (limited to 'config-model-api/src/main/java/com/yahoo/config/application/api')
-rw-r--r-- | config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java | 3 |
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")) { |