diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2021-10-06 23:40:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-06 23:40:09 +0200 |
commit | 0f737484f3723329e30a458e38abd2319ee34fa2 (patch) | |
tree | 78fa8a2a16cd5b67d7fa871085f842affa83de1b /config-model/src/main/java | |
parent | 0500f74df789df2db9fc6624bc51a477eea82686 (diff) | |
parent | e39ac9a9abddb4706716c04ed009a8f31b3ae75f (diff) |
Merge pull request #19438 from vespa-engine/bratseth/initalize-fallback-singlenode
Call initService when falling back to a single node
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java | 31 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java | 2 |
2 files changed, 20 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java index 0997f29729f..fea36eaeb15 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java @@ -216,9 +216,10 @@ public class StorageGroup { deployState.getDeployLogger().logApplicationPackage(Level.INFO, "'distribution-key' attribute on a content cluster's root group is ignored"); GroupBuilder groupBuilder = collectGroup(owner.isHosted(), group, nodes, null, null); - StorageGroup storageGroup = (owner.isHosted()) - ? groupBuilder.buildHosted(deployState, owner, Optional.empty()) - : groupBuilder.buildNonHosted(deployState, owner, Optional.empty()); + StorageGroup storageGroup = owner.isHosted() + ? groupBuilder.buildHosted(deployState, owner, Optional.empty()) + : groupBuilder.buildNonHosted(deployState, owner, Optional.empty()); + Redundancy redundancy = redundancyBuilder.build(owner.getName(), owner.isHosted(), storageGroup.subgroups.size(), storageGroup.getNumberOfLeafGroups(), storageGroup.countNodes(false), maxRedundancy); @@ -305,19 +306,25 @@ public class StorageGroup { storageGroup.nodes.add(nodeBuilder.build(deployState, owner, storageGroup)); } - if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) // no nodes or groups: create single node + if (parent.isEmpty() && subGroups.isEmpty() && nodeBuilders.isEmpty()) { // no nodes or groups: create single node storageGroup.nodes.add(buildSingleNode(deployState, owner)); + } return storageGroup; } private StorageNode buildSingleNode(DeployState deployState, ContentCluster parent) { int distributionKey = 0; - StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), 1.0, distributionKey , false); - sNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); - PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, null); - new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider); - return sNode; + + StorageNode searchNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), 1.0, distributionKey , false); + searchNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); + PersistenceEngine provider = parent.getPersistence().create(deployState, searchNode, storageGroup, null); + searchNode.initService(deployLogger); + + Distributor distributor = new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider); + distributor.setHostResource(searchNode.getHostResource()); + distributor.initService(deployLogger); + return searchNode; } /** @@ -332,7 +339,7 @@ public class StorageGroup { throw new IllegalArgumentException("Specifying individual groups is not supported on hosted applications"); Map<HostResource, ClusterMembership> hostMapping = nodeRequirement.isPresent() ? - provisionHosts(nodeRequirement.get(), owner.getStorageNodes().getClusterName(), owner.getRoot().hostSystem(), deployLogger) : + provisionHosts(nodeRequirement.get(), owner.getStorageCluster().getClusterName(), owner.getRoot().hostSystem(), deployLogger) : Collections.emptyMap(); Map<Optional<ClusterSpec.Group>, Map<HostResource, ClusterMembership>> hostGroups = collectAllocatedSubgroups(hostMapping); @@ -389,7 +396,7 @@ public class StorageGroup { } public StorageNode build(DeployState deployState, ContentCluster parent, StorageGroup storageGroup) { - StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageNodes(), element.getXml()); + StorageNode sNode = new StorageNode.Builder().build(deployState, parent.getStorageCluster(), element.getXml()); PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, element); new Distributor.Builder(clusterElement, provider).build(deployState, parent.getDistributorNodes(), element.getXml()); return sNode; @@ -494,7 +501,7 @@ public class StorageGroup { } private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) { - StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired()); + StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), null, clusterMembership.index(), clusterMembership.retired()); sNode.setHostResource(hostResource); sNode.initService(deployState.getDeployLogger()); 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 a746dc36540..f70ab5a711d 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 @@ -428,7 +428,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce public DistributorCluster getDistributorNodes() { return distributorNodes; } - public StorageCluster getStorageNodes() { return storageNodes; } + public StorageCluster getStorageCluster() { return storageNodes; } public ClusterControllerConfig getClusterControllerConfig() { return clusterControllerConfig; } |