diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2020-01-09 09:37:12 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2020-01-09 09:37:12 +0100 |
commit | 28d393fde0efe435a8dfa6dade5a4644989cb4c3 (patch) | |
tree | bde315f1a244ca96dec8637716507bf7e1016499 /config-model/src/main/java | |
parent | 919fd85dae2ed0de98b8a336755d9cf5fc66a6d1 (diff) |
Improve file distribution error message
Diffstat (limited to 'config-model/src/main/java')
15 files changed, 39 insertions, 52 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java index aede68a1dd1..1cc5c93c28a 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/ApplicationConfigProducerRoot.java @@ -223,7 +223,7 @@ public class ApplicationConfigProducerRoot extends AbstractConfigProducer<Abstra @Override public void getConfig(ModelConfig.Builder builder) { builder.vespaVersion(vespaVersion.toFullString()); - for (HostResource modelHost : getHostSystem().getHosts()) { + for (HostResource modelHost : hostSystem().getHosts()) { builder.hosts(new Hosts.Builder() .name(modelHost.getHostname()) .services(getServices(modelHost)) @@ -278,7 +278,7 @@ public class ApplicationConfigProducerRoot extends AbstractConfigProducer<Abstra } @Override - public HostSystem getHostSystem() { + public HostSystem hostSystem() { return hostSystem; } diff --git a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java index c2834847423..48c21f370f4 100644 --- a/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java +++ b/config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java @@ -265,13 +265,8 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce } } - /** - * Returns the one and only HostSystem of the root node - * Must be overridden by root node. - */ - public HostSystem getHostSystem() { - return getRoot().getHostSystem(); - } + /** Returns the one and only HostSystem of the root node. Must be overridden by root node. */ + public HostSystem hostSystem() { return getRoot().hostSystem(); } public AbstractConfigProducerRoot getRoot() { return parent == null ? null : parent.getRoot(); diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java index 74ab4504136..13f271ebe9d 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java @@ -123,7 +123,7 @@ public class MockRoot extends AbstractConfigProducerRoot { return fileDistributor; } - public HostSystem getHostSystem() { + public HostSystem hostSystem() { return hostSystem; } diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java index 25c97cba04b..81f5d303d56 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/TestRoot.java @@ -61,6 +61,6 @@ public class TestRoot { * @return A list of hosts. */ public List<HostResource> getHosts() { - return model.getHostSystem().getHosts(); + return model.hostSystem().getHosts(); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java index dc1fb0506f0..bf86bc4a453 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigProducer.java @@ -23,7 +23,7 @@ public interface ConfigProducer extends com.yahoo.config.ConfigInstance.Producer String getConfigId(); /** Returns the one and only HostSystem of the root node */ - HostSystem getHostSystem(); + HostSystem hostSystem(); /** Returns the user configs of this */ UserConfigRepo getUserConfigs(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java index 3ac5f794426..eda562bea5a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java @@ -63,8 +63,8 @@ public class HostSystem extends AbstractConfigProducer<Host> { /** * Returns the host with the given hostname. * - * @param name the hostname of the host. - * @return the host with the given hostname. + * @param name the hostname of the host + * @return the host with the given hostname, or null if no such host */ public HostResource getHostByHostname(String name) { // TODO: please eliminate the following ugly hack @@ -106,12 +106,10 @@ public class HostSystem extends AbstractConfigProducer<Host> { @Override public String toString() { - StringBuilder sb = new StringBuilder(); - for (HostResource host : hostname2host.values()) { - sb.append(host).append(","); - } - if (sb.length() > 0) sb.deleteCharAt(sb.length() - 1); - return sb.toString(); + return "hosts [" + hostname2host.values().stream() + .map(host -> host.getHostname()) + .collect(Collectors.joining(", ")) + + "]"; } public HostResource getHost(String hostAlias) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index 08956b272f6..ad61e0f48a3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -176,7 +176,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri - HostSystem hostSystem = root.getHostSystem(); + HostSystem hostSystem = root.hostSystem(); if (complete) { // create a a completed, frozen model configModelRepo.readConfigModels(deployState, this, builder, root, configModelRegistry); addServiceClusters(deployState, builder); @@ -261,16 +261,16 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri } /** Returns the one and only HostSystem of this VespaModel */ - public HostSystem getHostSystem() { - return root.getHostSystem(); + public HostSystem hostSystem() { + return root.hostSystem(); } /** Return a collection of all hostnames used in this application */ @Override public Set<HostInfo> getHosts() { - return getHostSystem().getHosts().stream() - .map(HostResource::getHostInfo) - .collect(Collectors.toCollection(LinkedHashSet::new)); + return hostSystem().getHosts().stream() + .map(HostResource::getHostInfo) + .collect(Collectors.toCollection(LinkedHashSet::new)); } public FileDistributor getFileDistributor() { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index d31c411a39e..7484e0cd9a0 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -262,27 +262,21 @@ public class Admin extends AbstractConfigProducer implements Serializable { private void addFileDistribution(HostResource host) { FileDistributor fileDistributor = fileDistribution.getFileDistributor(); - HostResource deployHost = getHostSystem().getHostByHostname(fileDistributor.fileSourceHost()); - if (deployHostIsMissing(deployHost)) { - throw new RuntimeException("Could not find host in the application's host system: '" + - fileDistributor.fileSourceHost() + "'. Hostsystem=" + getHostSystem()); - } + HostResource hostResource = hostSystem().getHostByHostname(fileDistributor.fileSourceHost()); + if (hostResource == null && ! multitenant) + throw new IllegalArgumentException("Could not find " + host + " in the application's " + hostSystem()); FileDistributionConfigProvider configProvider = new FileDistributionConfigProvider(fileDistribution, fileDistributor, - host == deployHost, + host == hostResource, host.getHost()); fileDistribution.addFileDistributionConfigProducer(host.getHost(), configProvider); } - private boolean deployHostIsMissing(HostResource deployHost) { - return !multitenant && deployHost == null; - } - // If not configured by user: Use default setup: max 3 slobroks, 1 on the default configserver host private List<Slobrok> createDefaultSlobrokSetup(DeployLogger deployLogger) { - List<HostResource> hosts = getHostSystem().getHosts(); + List<HostResource> hosts = hostSystem().getHosts(); List<Slobrok> slobs = new ArrayList<>(); if (logserver != null) { Slobrok slobrok = new Slobrok(this, 0); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java index 9de777a96ef..a115b25cbd9 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java @@ -55,7 +55,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu List<Configserver> getConfigServersFromSpec(DeployLogger deployLogger, AbstractConfigProducer parent) { List<Configserver> configservers = new ArrayList<>(); for (ConfigServerSpec spec : configServerSpecs) { - HostSystem hostSystem = parent.getHostSystem(); + HostSystem hostSystem = parent.hostSystem(); HostResource host = new HostResource(Host.createConfigServerHost(hostSystem, spec.getHostName())); hostSystem.addBoundHost(host); Configserver configserver = new Configserver(parent, spec.getHostName(), spec.getConfigServerPort()); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java index fbd3f353d95..61d0cd7cd1e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java @@ -62,7 +62,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { private void assignSlobroks(DeployLogger deployLogger, NodesSpecification nodesSpecification, Admin admin) { if (nodesSpecification.isDedicated()) { - createSlobroks(deployLogger, admin, allocateHosts(admin.getHostSystem(), "slobroks", nodesSpecification)); + createSlobroks(deployLogger, admin, allocateHosts(admin.hostSystem(), "slobroks", nodesSpecification)); } else { createSlobroks(deployLogger, admin, pickContainerHostsForSlobrok(nodesSpecification.count(), 2)); @@ -73,7 +73,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { if (nodesSpecification.count() > 1) throw new IllegalArgumentException("You can only request a single log server"); if (deployState.getProperties().applicationId().instance().isTester()) return; // No logserver is needed on tester applications if (nodesSpecification.isDedicated()) { - Collection<HostResource> hosts = allocateHosts(admin.getHostSystem(), "logserver", nodesSpecification); + Collection<HostResource> hosts = allocateHosts(admin.hostSystem(), "logserver", nodesSpecification); if (hosts.isEmpty()) return; // No log server can be created (and none is needed) Logserver logserver = createLogserver(deployState.getDeployLogger(), admin, hosts); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java index 2718db46be9..97b78e1b9b1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java @@ -122,7 +122,7 @@ public class VespaDomBuilder extends VespaModelBuilder { T t = doBuild(deployState, ancestor, producerSpec); if (t instanceof AbstractService) { - initializeService((AbstractService)t, deployState, ancestor.getHostSystem(), producerSpec); + initializeService((AbstractService)t, deployState, ancestor.hostSystem(), producerSpec); } else { initializeProducer(t, deployState, producerSpec); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 16ecf5f761c..3e9ebaeccd4 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -607,7 +607,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { /** Creates a single host when there is no nodes tag */ private HostResource allocateSingleNodeHost(ApplicationContainerCluster cluster, DeployLogger logger, Element containerElement, ConfigModelContext context) { DeployState deployState = context.getDeployState(); - HostSystem hostSystem = cluster.getHostSystem(); + HostSystem hostSystem = cluster.hostSystem(); if (deployState.isHosted()) { Optional<HostResource> singleContentHost = getHostResourceFromContentClusters(cluster, containerElement, context); if (singleContentHost.isPresent()) { // there is a content cluster; put the container on its first node @@ -631,7 +631,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { private List<ApplicationContainer> createNodesFromNodeCount(ApplicationContainerCluster cluster, Element nodesElement, ConfigModelContext context) { NodesSpecification nodesSpecification = NodesSpecification.from(new ModelElement(nodesElement), context); - Map<HostResource, ClusterMembership> hosts = nodesSpecification.provision(cluster.getRoot().getHostSystem(), + Map<HostResource, ClusterMembership> hosts = nodesSpecification.provision(cluster.getRoot().hostSystem(), ClusterSpec.Type.container, ClusterSpec.Id.from(cluster.getName()), log); @@ -645,8 +645,8 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { context.getDeployState().getWantedNodeVespaVersion(), false); Map<HostResource, ClusterMembership> hosts = - cluster.getRoot().getHostSystem().allocateHosts(clusterSpec, - Capacity.fromRequiredNodeType(type), 1, log); + cluster.getRoot().hostSystem().allocateHosts(clusterSpec, + Capacity.fromRequiredNodeType(type), 1, log); return createNodesFromHosts(context.getDeployLogger(), hosts, cluster); } @@ -663,7 +663,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { Map<HostResource, ClusterMembership> hosts = StorageGroup.provisionHosts(nodeSpecification, referenceId, - cluster.getRoot().getHostSystem(), + cluster.getRoot().hostSystem(), context.getDeployLogger()); return createNodesFromHosts(context.getDeployLogger(), hosts, cluster); } @@ -690,7 +690,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { Map<HostResource, ClusterMembership> hosts = StorageGroup.provisionHosts(nodesSpec, contentServices.get(0).getAttribute("id"), - cluster.getRoot().getHostSystem(), + cluster.getRoot().hostSystem(), context.getDeployLogger()); return Optional.of(hosts.keySet().iterator().next()); } 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 6b000835a22..adfc703f747 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 @@ -284,7 +284,7 @@ public class StorageGroup { private StorageNode buildSingleNode(DeployState deployState, ContentCluster parent) { int distributionKey = 0; StorageNode sNode = new StorageNode(parent.getStorageNodes(), 1.0, distributionKey , false); - sNode.setHostResource(parent.getHostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); + sNode.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC)); PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, storageGroup, null); new Distributor(parent.getDistributorNodes(), distributionKey, null, provider); return sNode; @@ -302,7 +302,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().getHostSystem(), deployLogger) : + provisionHosts(nodeRequirement.get(), owner.getStorageNodes().getClusterName(), owner.getRoot().hostSystem(), deployLogger) : Collections.emptyMap(); Map<Optional<ClusterSpec.Group>, Map<HostResource, ClusterMembership>> hostGroups = collectAllocatedSubgroups(hostMapping); 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 4925a13c4d2..1a0c3a875fb 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 @@ -345,7 +345,7 @@ public class ContentCluster extends AbstractConfigProducer implements } private Collection<HostResource> getControllerHosts(NodesSpecification nodesSpecification, Admin admin, String clusterName, ConfigModelContext context) { - return nodesSpecification.provision(admin.getHostSystem(), ClusterSpec.Type.admin, ClusterSpec.Id.from(clusterName), context.getDeployLogger()).keySet(); + return nodesSpecification.provision(admin.hostSystem(), ClusterSpec.Type.admin, ClusterSpec.Id.from(clusterName), context.getDeployLogger()).keySet(); } private List<HostResource> drawControllerHosts(int count, StorageGroup rootGroup, Collection<ContainerModel> containers) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java index 76f3415a666..7d304968bc7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/generic/service/ServiceCluster.java @@ -42,9 +42,9 @@ public class ServiceCluster extends AbstractConfigProducer { } @Override - public HostSystem getHostSystem() { + public HostSystem hostSystem() { if (hostSystem!=null) return hostSystem; - return super.getHostSystem(); + return super.hostSystem(); } /** |