aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-01-13 11:19:48 +0100
committerMartin Polden <mpolden@mpolden.no>2020-01-13 11:19:48 +0100
commit24c92778445b404dd35056ef4e1f5c89dabaf275 (patch)
tree7b4b418dba84bf389f35a42c168dfb651b3344b0 /config-model
parent4976b922193b1071db4711328caf31bc54e1a0d1 (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.java5
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java27
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());
+ }
+
}