diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-01-13 11:19:48 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-01-13 11:19:48 +0100 |
commit | 24c92778445b404dd35056ef4e1f5c89dabaf275 (patch) | |
tree | 7b4b418dba84bf389f35a42c168dfb651b3344b0 /config-model | |
parent | 4976b922193b1071db4711328caf31bc54e1a0d1 (diff) |
Do not detect ID-less content cluster as combined
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java | 5 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java | 27 |
2 files changed, 25 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java index f221b1974d7..e72e05a6ebc 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java @@ -289,12 +289,13 @@ public class NodesSpecification { var content = findParentByTag("content", element); if (content.isEmpty()) return false; - var clusterId = content.get().getAttribute("id"); + var contentClusterId = content.get().getAttribute("id"); + if (contentClusterId.isEmpty()) return false; for (var rootChild : XML.getChildren(services.get())) { if (!"container".equals(rootChild.getTagName())) continue; // Only container can reference content var nodes = XML.getChild(rootChild, "nodes"); if (nodes == null) continue; - if (!clusterId.equals(nodes.getAttribute("of"))) continue; + if (!contentClusterId.equals(nodes.getAttribute("of"))) continue; return true; } return false; 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 d9b4693921c..812199b29e2 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 @@ -194,14 +194,25 @@ public class ModelProvisioningTest { " </documents>" + " <nodes count='2'/>" + " </content>" + + " <content version='1.0'>" + + " <redundancy>2</redundancy>" + + " <documents>" + + " <document type='type1' mode='index'/>" + + " </documents>" + + " <nodes count='2'/>" + + " </content>" + "</services>"; VespaModelTester tester = new VespaModelTester(); - tester.addHosts(3); + tester.addHosts(5); VespaModel model = tester.createModel(xmlWithNodes, true); assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size()); assertEquals("Nodes in container1", 1, model.getContainerClusters().get("container1").getContainers().size()); + assertEquals("Nodes in cluster without ID", 2, model.getContentClusters().get("content").getRootGroup().getNodes().size()); assertEquals("Heap size for container", 60, physicalMemoryPercentage(model.getContainerClusters().get("container1"))); + assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Type.content, model); + assertProvisioned(1, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model); + assertProvisioned(2, ClusterSpec.Id.from("content"), ClusterSpec.Type.content, model); } @Test @@ -250,10 +261,8 @@ public class ModelProvisioningTest { assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size()); assertEquals("Heap size is lowered with combined clusters", 17, physicalMemoryPercentage(model.getContainerClusters().get("container1"))); - assertEquals(2, model.hostSystem().getHosts().stream() - .filter(hostResource -> hostResource.spec().membership().get().cluster().type() == ClusterSpec.Type.combined) - .count()); - + assertProvisioned(0, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model); + assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Type.combined, model); } @Test @@ -1770,4 +1779,12 @@ public class ModelProvisioningTest { assertTrue(logdConfig.logserver().use()); } + private static void assertProvisioned(int nodeCount, ClusterSpec.Id id, ClusterSpec.Type type, VespaModel model) { + assertEquals("Nodes in cluster " + id + " with type " + type, nodeCount, + model.hostSystem().getHosts().stream() + .map(h -> h.spec().membership().get().cluster()) + .filter(spec -> spec.id().equals(id) && spec.type().equals(type)) + .count()); + } + } |