summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-10-08 22:32:10 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-10-08 22:33:55 +0200
commitdd70aed6d773d02a1ac19c7c3af642feeef2212f (patch)
treefb7454fabb447e3332a647b35a122772c13cfe4f /config-model
parent622a5de6662af3f516d0898bfe78adc270f4b294 (diff)
Wire in deployLogger explicit instead of using a backdoor.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/producer/AbstractConfigProducer.java5
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Host.java33
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java13
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostSystem.java29
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java37
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java25
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/StorageGroup.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java15
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java36
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java41
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java83
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java7
27 files changed, 215 insertions, 200 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
index f14a1ea3c2c..0b638c14485 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelRepo.java
@@ -79,7 +79,7 @@ public class ConfigModelRepo implements ConfigModelRepoAdder, Serializable, Iter
ConfigModelRegistry configModelRegistry) throws IOException, SAXException {
Element userServicesElement = getServicesFromApp(deployState.getApplicationPackage());
readConfigModels(root, userServicesElement, deployState, vespaModel, configModelRegistry);
- builder.postProc(root, this);
+ builder.postProc(deployState.getDeployLogger(), root, this);
}
private Element getServicesFromApp(ApplicationPackage applicationPackage) throws IOException, SAXException {
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 71ee5d148a8..6cb73429971 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
@@ -431,11 +431,6 @@ public abstract class AbstractConfigProducer<CHILD extends AbstractConfigProduce
}
}
- /** Returns a logger to be used for warnings and messages during initialization, never null */
- public DeployLogger deployLogger() {
- return parent.deployLogger();
- }
-
// TODO: Make producers depend on AdminModel instead
/** Returns a monitoring service if configured, null otherwise */
protected Monitoring getMonitoringService() {
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 aae1b6445c0..baf673570e4 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
@@ -60,7 +60,7 @@ public class MockRoot extends AbstractConfigProducerRoot {
public MockRoot(String rootConfigId, DeployState deployState) {
super(rootConfigId);
- hostSystem = new HostSystem(this, "hostsystem", deployState.getProvisioner());
+ hostSystem = new HostSystem(this, "hostsystem", deployState.getProvisioner(), deployState.getDeployLogger());
this.deployState = deployState;
fileDistributor = new FileDistributor(deployState.getFileRegistry(), null);
}
@@ -162,9 +162,8 @@ public class MockRoot extends AbstractConfigProducerRoot {
return admin;
}
- @Override
public DeployLogger deployLogger() {
- return new BaseDeployLogger();
+ return deployState.getDeployLogger();
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
index 540393cec7b..fcd9df309a4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model;
import com.yahoo.config.FileReference;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.PortInfo;
import com.yahoo.config.model.api.ServiceInfo;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -123,7 +124,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
* @param hostResource The physical host on which this service should run.
* @param userPort The wanted port given by the user.
*/
- private void initService(HostResource hostResource, int userPort) {
+ private void initService(DeployLogger deployLogger, HostResource hostResource, int userPort) {
if (initialized) {
throw new IllegalStateException("Service '" + getConfigId() + "' already initialized.");
}
@@ -132,7 +133,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
"The hostalias is probably missing from hosts.xml.");
}
id = getIndex(hostResource);
- ports = hostResource.allocateService(this, getInstanceWantedPort(userPort));
+ ports = hostResource.allocateService(deployLogger, this, getInstanceWantedPort(userPort));
initialized = true;
}
@@ -140,8 +141,8 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
* Called by builder class which has not given the host or port in a constructor, hence
* initService is not yet run for this.
*/
- public void initService() {
- initService(this.hostResource, this.basePort);
+ public void initService(DeployLogger deployLogger) {
+ initService(deployLogger, this.hostResource, this.basePort);
}
/**
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Host.java b/config-model/src/main/java/com/yahoo/vespa/model/Host.java
index e0942bb845a..1aff926a8c4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Host.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Host.java
@@ -3,11 +3,9 @@ package com.yahoo.vespa.model;
import java.io.File;
import java.io.IOException;
-import java.net.UnknownHostException;
-import java.util.*;
-import java.util.logging.Level;
+import java.util.Objects;
+
import com.yahoo.cloud.config.SentinelConfig;
-import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.producer.AbstractConfigProducer;
/**
@@ -29,36 +27,23 @@ public final class Host extends AbstractConfigProducer<AbstractConfigProducer<?>
* @param hostname hostname for this host.
*/
public Host(AbstractConfigProducer parent, String hostname) {
- this(parent, hostname, false, parent.deployLogger());
+ this(parent, hostname, false);
}
- private Host(AbstractConfigProducer parent, String hostname, boolean runsConfigServer, DeployLogger deployLogger) {
+ private Host(AbstractConfigProducer parent, String hostname, boolean runsConfigServer) {
super(parent, hostname);
Objects.requireNonNull(hostname, "The host name of a host cannot be null");
this.runsConfigServer = runsConfigServer;
this.hostname = hostname;
if (parent instanceof HostSystem)
- checkName(hostname, deployLogger);
- }
-
- private void checkName(String hostname, DeployLogger deployLogger) {
- // Give a warning if the host does not exist
- try {
- Object address = java.net.InetAddress.getByName(hostname);
- } catch (UnknownHostException e) {
- deployLogger.log(Level.WARNING, "Unable to lookup IP address of host: " + hostname);
- }
- if (! hostname.contains(".")) {
- deployLogger.log(Level.WARNING, "Host named '" + hostname + "' may not receive any config " +
- "since it is not a canonical hostname");
- }
+ ((HostSystem)parent).checkName(hostname);
}
- public static Host createConfigServerHost(DeployLogger deployLogger, AbstractConfigProducer parent, String hostname) {
- return new Host(parent, hostname, true, deployLogger);
+ public static Host createConfigServerHost(AbstractConfigProducer parent, String hostname) {
+ return new Host(parent, hostname, true);
}
- public static Host createHost(DeployLogger deployLogger, AbstractConfigProducer parent, String hostname) {
- return new Host(parent, hostname, false, deployLogger);
+ public static Host createHost(AbstractConfigProducer parent, String hostname) {
+ return new Host(parent, hostname, false);
}
// For testing
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index 16335a435b9..75020b23607 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model;
import com.yahoo.component.Version;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.Flavor;
@@ -97,8 +98,8 @@ public class HostResource implements Comparable<HostResource> {
* @param wantedPort the wanted port for this service
* @return The allocated ports for the Service.
*/
- List<Integer> allocateService(AbstractService service, int wantedPort) {
- List<Integer> ports = allocatePorts(service, wantedPort);
+ List<Integer> allocateService(DeployLogger deployLogger, AbstractService service, int wantedPort) {
+ List<Integer> ports = allocatePorts(deployLogger, service, wantedPort);
assert (getService(service.getServiceName()) == null) :
("There is already a service with name '" + service.getServiceName() + "' registered on " + this +
". Most likely a programming error - all service classes must have unique names, even in different packages!");
@@ -107,7 +108,7 @@ public class HostResource implements Comparable<HostResource> {
return ports;
}
- private List<Integer> allocatePorts(AbstractService service, int wantedPort) {
+ private List<Integer> allocatePorts(DeployLogger deployLogger, AbstractService service, int wantedPort) {
List<Integer> ports = new ArrayList<>();
if (service.getPortCount() < 1)
return ports;
@@ -118,7 +119,7 @@ public class HostResource implements Comparable<HostResource> {
throw new RuntimeException(service + " wants baseport " + wantedPort +
", but it has not reserved any ports, so it cannot name a desired baseport.");
}
- if (service.requiresWantedPort() || canUseWantedPort(service, wantedPort, serviceBasePort))
+ if (service.requiresWantedPort() || canUseWantedPort(deployLogger, service, wantedPort, serviceBasePort))
serviceBasePort = wantedPort;
}
@@ -136,12 +137,12 @@ public class HostResource implements Comparable<HostResource> {
return ports;
}
- private boolean canUseWantedPort(AbstractService service, int wantedPort, int serviceBasePort) {
+ private boolean canUseWantedPort(DeployLogger deployLogger, AbstractService service, int wantedPort, int serviceBasePort) {
for (int i = 0; i < service.getPortCount(); i++) {
int port = wantedPort + i;
if (portDB.containsKey(port)) {
AbstractService s = (AbstractService)portDB.get(port);
- s.getRoot().deployLogger().log(Level.WARNING, service.getServiceName() +" cannot reserve port " + port + " on " +
+ deployLogger.log(Level.WARNING, service.getServiceName() +" cannot reserve port " + port + " on " +
this + ": Already reserved for " + s.getServiceName() +
". Using default port range from " + serviceBasePort);
return false;
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 8cac31bbaad..6f8064d0b5c 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
@@ -38,10 +38,25 @@ public class HostSystem extends AbstractConfigProducer<Host> {
private final Map<String, HostResource> hostname2host = new LinkedHashMap<>();
private final HostProvisioner provisioner;
+ private final DeployLogger deployLogger;
- public HostSystem(AbstractConfigProducer parent, String name, HostProvisioner provisioner) {
+ public HostSystem(AbstractConfigProducer parent, String name, HostProvisioner provisioner, DeployLogger deployLogger) {
super(parent, name);
this.provisioner = provisioner;
+ this.deployLogger = deployLogger;
+ }
+
+ void checkName(String hostname) {
+ // Give a warning if the host does not exist
+ try {
+ Object address = java.net.InetAddress.getByName(hostname);
+ } catch (UnknownHostException e) {
+ deployLogger.log(Level.WARNING, "Unable to lookup IP address of host: " + hostname);
+ }
+ if (! hostname.contains(".")) {
+ deployLogger.log(Level.WARNING, "Host named '" + hostname + "' may not receive any config " +
+ "since it is not a canonical hostname");
+ }
}
/**
@@ -99,10 +114,6 @@ public class HostSystem extends AbstractConfigProducer<Host> {
}
public HostResource getHost(String hostAlias) {
- return getHost(hostAlias, deployLogger());
- }
-
- public HostResource getHost(String hostAlias, DeployLogger deployLogger) {
HostSpec hostSpec = provisioner.allocateHost(hostAlias);
for (HostResource resource : hostname2host.values()) {
if (resource.getHostname().equals(hostSpec.hostname())) {
@@ -110,11 +121,11 @@ public class HostSystem extends AbstractConfigProducer<Host> {
return resource;
}
}
- return addNewHost(hostSpec, deployLogger);
+ return addNewHost(hostSpec);
}
- private HostResource addNewHost(HostSpec hostSpec, DeployLogger deployLogger) {
- Host host = Host.createHost(deployLogger, this, hostSpec.hostname());
+ private HostResource addNewHost(HostSpec hostSpec) {
+ Host host = Host.createHost(this, hostSpec.hostname());
HostResource hostResource = new HostResource(host, hostSpec.version());
hostResource.setFlavor(hostSpec.flavor());
hostSpec.membership().ifPresent(hostResource::addClusterMembership);
@@ -136,7 +147,7 @@ public class HostSystem extends AbstractConfigProducer<Host> {
Map<HostResource, ClusterMembership> retAllocatedHosts = new LinkedHashMap<>();
for (HostSpec spec : allocatedHosts) {
// This is needed for single node host provisioner to work in unit tests for hosted vespa applications.
- HostResource host = getExistingHost(spec).orElseGet(() -> addNewHost(spec, logger));
+ HostResource host = getExistingHost(spec).orElseGet(() -> addNewHost(spec));
retAllocatedHosts.put(host, spec.membership().orElse(null));
if (! host.getFlavor().isPresent()) {
host.setFlavor(spec.flavor());
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 e243778d56e..50db0f48bc7 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
@@ -599,10 +599,5 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
public ConfigModelRepo configModelRepo() {
return configModelRepo;
}
-
- @Override
- public DeployLogger deployLogger() {
- return deployLogger;
- }
}
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 863ddef8187..9e12886143d 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
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.admin;
import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.cloud.config.ZookeepersConfig;
import com.yahoo.cloud.config.log.LogdConfig;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModelContext.ApplicationType;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.deploy.DeployState;
@@ -191,7 +192,7 @@ public class Admin extends AbstractConfigProducer implements Serializable {
*/
public void addPerHostServices(List<HostResource> hosts, DeployState deployState) {
if (slobroks.isEmpty()) // TODO: Move to caller
- slobroks.addAll(createDefaultSlobrokSetup());
+ slobroks.addAll(createDefaultSlobrokSetup(deployState.getDeployLogger()));
for (HostResource host : hosts) {
if (!host.getHost().runsConfigServer()) {
addCommonServices(host, deployState);
@@ -199,36 +200,36 @@ public class Admin extends AbstractConfigProducer implements Serializable {
}
}
private void addCommonServices(HostResource host, DeployState deployState) {
- addConfigSentinel(host, deployState.getProperties().applicationId(), deployState.zone());
- addLogd(host);
- addConfigProxy(host);
+ addConfigSentinel(deployState.getDeployLogger(), host, deployState.getProperties().applicationId(), deployState.zone());
+ addLogd(deployState.getDeployLogger(), host);
+ addConfigProxy(deployState.getDeployLogger(), host);
addFileDistribution(host);
if (logForwarderConfig != null) {
- addLogForwarder(host);
+ addLogForwarder(deployState.getDeployLogger(), host);
}
}
- private void addConfigSentinel(HostResource host, ApplicationId applicationId, Zone zone) {
+ private void addConfigSentinel(DeployLogger deployLogger, HostResource host, ApplicationId applicationId, Zone zone) {
ConfigSentinel configSentinel = new ConfigSentinel(host.getHost(), applicationId, zone);
- addAndInitializeService(host, configSentinel);
+ addAndInitializeService(deployLogger, host, configSentinel);
host.getHost().setConfigSentinel(configSentinel);
}
- private void addLogForwarder(HostResource host) {
- addAndInitializeService(host, new LogForwarder(host.getHost(), logForwarderConfig));
+ private void addLogForwarder(DeployLogger deployLogger, HostResource host) {
+ addAndInitializeService(deployLogger, host, new LogForwarder(host.getHost(), logForwarderConfig));
}
- private void addLogd(HostResource host) {
- addAndInitializeService(host, new Logd(host.getHost()));
+ private void addLogd(DeployLogger deployLogger, HostResource host) {
+ addAndInitializeService(deployLogger, host, new Logd(host.getHost()));
}
- private void addConfigProxy(HostResource host) {
- addAndInitializeService(host, new ConfigProxy(host.getHost()));
+ private void addConfigProxy(DeployLogger deployLogger, HostResource host) {
+ addAndInitializeService(deployLogger, host, new ConfigProxy(host.getHost()));
}
- public void addAndInitializeService(HostResource host, AbstractService service) {
+ public void addAndInitializeService(DeployLogger deployLogger, HostResource host, AbstractService service) {
service.setHostResource(host);
- service.initService();
+ service.initService(deployLogger);
}
private void addFileDistribution(HostResource host) {
@@ -252,12 +253,12 @@ public class Admin extends AbstractConfigProducer implements Serializable {
}
// If not configured by user: Use default setup: max 3 slobroks, 1 on the default configserver host
- private List<Slobrok> createDefaultSlobrokSetup() {
+ private List<Slobrok> createDefaultSlobrokSetup(DeployLogger deployLogger) {
List<HostResource> hosts = getHostSystem().getHosts();
List<Slobrok> slobs = new ArrayList<>();
if (logserver != null) {
Slobrok slobrok = new Slobrok(this, 0);
- addAndInitializeService(logserver.getHostResource(), slobrok);
+ addAndInitializeService(deployLogger, logserver.getHostResource(), slobrok);
slobs.add(slobrok);
}
@@ -266,7 +267,7 @@ public class Admin extends AbstractConfigProducer implements Serializable {
HostResource host = hosts.get(n);
if ((logserver== null || host != logserver.getHostResource()) && ! host.getHost().runsConfigServer()) {
Slobrok newSlobrok = new Slobrok(this, slobs.size());
- addAndInitializeService(host, newSlobrok);
+ addAndInitializeService(deployLogger, host, newSlobrok);
slobs.add(newSlobrok);
}
n++;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
index 4f175b2ec42..1c2ea4ecd41 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/VespaModelBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModelRepo;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -25,6 +26,6 @@ public abstract class VespaModelBuilder {
* @param producerRoot The root producer.
* @param configModelRepo a {@link com.yahoo.config.model.ConfigModelRepo instance}
*/
- public abstract void postProc(AbstractConfigProducer producerRoot, ConfigModelRepo configModelRepo);
+ public abstract void postProc(DeployLogger deployLogger, AbstractConfigProducer producerRoot, ConfigModelRepo configModelRepo);
}
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 a11a5c706c7..fa28802b3ac 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
@@ -59,12 +59,12 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
List<Configserver> configservers = new ArrayList<>();
for (ConfigServerSpec spec : configServerSpecs) {
HostSystem hostSystem = parent.getHostSystem();
- HostResource host = new HostResource(Host.createConfigServerHost(deployLogger, hostSystem, spec.getHostName()));
+ HostResource host = new HostResource(Host.createConfigServerHost(hostSystem, spec.getHostName()));
hostSystem.addBoundHost(host);
Configserver configserver = new Configserver(parent, spec.getHostName(), spec.getConfigServerPort());
configserver.setHostResource(host);
configserver.setBasePort(configserver.getWantedPort());
- configserver.initService();
+ configserver.initService(deployLogger);
configservers.add(configserver);
}
return configservers;
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 331656c1eff..5698485b004 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
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.deploy.DeployState;
@@ -59,18 +60,18 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Optional<NodesSpecification> requestedLogservers =
NodesSpecification.optionalDedicatedFromParent(adminElement.getChild("logservers"), context);
- assignSlobroks(requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin);
+ assignSlobroks(deployState.getDeployLogger(), requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin);
assignLogserver(deployState, requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin);
addLogForwarders(adminElement.getChild("logforwarding"), admin);
}
- private void assignSlobroks(NodesSpecification nodesSpecification, Admin admin) {
+ private void assignSlobroks(DeployLogger deployLogger, NodesSpecification nodesSpecification, Admin admin) {
if (nodesSpecification.isDedicated()) {
- createSlobroks(admin, allocateHosts(admin.getHostSystem(), "slobroks", nodesSpecification));
+ createSlobroks(deployLogger, admin, allocateHosts(admin.getHostSystem(), "slobroks", nodesSpecification));
}
else {
- createSlobroks(admin, pickContainerHostsForSlobrok(nodesSpecification.count(), 2));
+ createSlobroks(deployLogger, admin, pickContainerHostsForSlobrok(nodesSpecification.count(), 2));
}
}
@@ -81,13 +82,13 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Collection<HostResource> hosts = allocateHosts(admin.getHostSystem(), "logserver", nodesSpecification);
if (hosts.isEmpty()) return; // No log server can be created (and none is needed)
- Logserver logserver = createLogserver(admin, hosts);
+ Logserver logserver = createLogserver(deployState.getDeployLogger(), admin, hosts);
createAdditionalContainerOnLogserverHost(deployState, admin, logserver.getHostResource());
} else if (containerModels.iterator().hasNext()) {
List<HostResource> hosts = sortedContainerHostsFrom(containerModels.iterator().next(), nodesSpecification.count(), false);
if (hosts.isEmpty()) return; // No log server can be created (and none is needed)
- createLogserver(admin, hosts);
+ createLogserver(deployState.getDeployLogger(), admin, hosts);
} else {
context.getDeployLogger().log(LogLevel.INFO, "No container host available to use for running logserver");
}
@@ -124,9 +125,9 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Container container = new Container(logServerCluster, "" + 0, 0, deployState.isHosted());
container.setHostResource(hostResource);
- container.initService();
+ container.initService(deployState.getDeployLogger());
logServerCluster.addContainer(container);
- admin.addAndInitializeService(hostResource, container);
+ admin.addAndInitializeService(deployState.getDeployLogger(), hostResource, container);
admin.setLogserverContainerCluster(logServerCluster);
}
@@ -203,15 +204,15 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
return HostResource.pickHosts(hosts, count, 1);
}
- private Logserver createLogserver(Admin admin, Collection<HostResource> hosts) {
+ private Logserver createLogserver(DeployLogger deployLogger, Admin admin, Collection<HostResource> hosts) {
Logserver logserver = new Logserver(admin);
logserver.setHostResource(hosts.iterator().next());
admin.setLogserver(logserver);
- logserver.initService();
+ logserver.initService(deployLogger);
return logserver;
}
- private void createSlobroks(Admin admin, Collection<HostResource> hosts) {
+ private void createSlobroks(DeployLogger deployLogger, Admin admin, Collection<HostResource> hosts) {
if (hosts.isEmpty()) return; // No slobroks can be created (and none are needed)
List<Slobrok> slobroks = new ArrayList<>();
int index = 0;
@@ -219,7 +220,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Slobrok slobrok = new Slobrok(admin, index++);
slobrok.setHostResource(host);
slobroks.add(slobrok);
- slobrok.initService();
+ slobrok.initService(deployLogger);
}
admin.addSlobroks(slobroks);
}
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 dd9d802cdc8..9fafe89ea54 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
@@ -178,7 +178,7 @@ public class VespaDomBuilder extends VespaModelBuilder {
// This depends on which constructor in AbstractService is used, but the best way
// is to let this method do initialize.
if (!t.isInitialized()) {
- t.initService();
+ t.initService(deployState.getDeployLogger());
}
}
@@ -233,7 +233,7 @@ public class VespaDomBuilder extends VespaModelBuilder {
deployState.getDocumentModel(),
deployState.getProperties().vespaVersion(),
deployState.getProperties().applicationId());
- root.setHostSystem(new HostSystem(root, "hosts", deployState.getProvisioner()));
+ root.setHostSystem(new HostSystem(root, "hosts", deployState.getProvisioner(), deployState.getDeployLogger()));
new Client(root);
return root;
}
@@ -277,8 +277,8 @@ public class VespaDomBuilder extends VespaModelBuilder {
* @param root root config producer
* @param configModelRepo a {@link ConfigModelRepo}
*/
- public void postProc(AbstractConfigProducer root, ConfigModelRepo configModelRepo) {
- createTlds(configModelRepo);
+ public void postProc(DeployLogger deployLogger, AbstractConfigProducer root, ConfigModelRepo configModelRepo) {
+ createTlds(deployLogger, configModelRepo);
setContentSearchClusterIndexes(configModelRepo);
createDocprocMBusServersAndClients(configModelRepo);
}
@@ -294,10 +294,10 @@ public class VespaDomBuilder extends VespaModelBuilder {
docproc.getChains().addServersAndClientsForChains();
}
- private void createTlds(ConfigModelRepo pc) {
+ private void createTlds(DeployLogger deployLogger, ConfigModelRepo pc) {
for (ConfigModel p : pc.asMap().values()) {
if (p instanceof Content) {
- ((Content)p).createTlds(pc);
+ ((Content)p).createTlds(deployLogger, pc);
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
index 8317f46d4ee..ee3d382e93c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/Container.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.model.container;
import com.yahoo.component.ComponentId;
import com.yahoo.component.ComponentSpecification;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.ComponentsConfig;
import com.yahoo.container.QrConfig;
@@ -151,11 +152,11 @@ public class Container extends AbstractService implements
public void addBuiltinHandlers() { }
@Override
- public void initService() {
+ public void initService(DeployLogger deployLogger) {
if (isInitialized()) return;
// XXX: Must be called first, to set the baseport
- super.initService();
+ super.initService(deployLogger);
if (getHttp() == null) {
initDefaultJettyConnector();
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 6bd672701c3..80026d0182e 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
@@ -455,7 +455,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
Container node = new Container(cluster, "container.0", 0, cluster.isHostedVespa());
HostResource host = allocateSingleNodeHost(cluster, log, containerElement, context);
node.setHostResource(host);
- node.initService();
+ node.initService(context.getDeployLogger());
cluster.addContainers(Collections.singleton(node));
}
else {
@@ -544,7 +544,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
ClusterSpec.Type.container,
ClusterSpec.Id.from(cluster.getName()),
log);
- return createNodesFromHosts(hosts, cluster);
+ return createNodesFromHosts(context.getDeployLogger(), hosts, cluster);
}
private List<Container> createNodesFromNodeType(ContainerCluster cluster, Element nodesElement, ConfigModelContext context) {
@@ -556,7 +556,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
Map<HostResource, ClusterMembership> hosts =
cluster.getRoot().getHostSystem().allocateHosts(clusterSpec,
Capacity.fromRequiredNodeType(type), 1, log);
- return createNodesFromHosts(hosts, cluster);
+ return createNodesFromHosts(context.getDeployLogger(), hosts, cluster);
}
private List<Container> createNodesFromContentServiceReference(ContainerCluster cluster, Element nodesElement, ConfigModelContext context) {
@@ -579,7 +579,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
referenceId,
cluster.getRoot().getHostSystem(),
context.getDeployLogger());
- return createNodesFromHosts(hosts, cluster);
+ return createNodesFromHosts(context.getDeployLogger(), hosts, cluster);
}
/**
@@ -619,13 +619,13 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
return servicesRootOf(parentElement);
}
- private List<Container> createNodesFromHosts(Map<HostResource, ClusterMembership> hosts, ContainerCluster cluster) {
+ private List<Container> createNodesFromHosts(DeployLogger deployLogger, Map<HostResource, ClusterMembership> hosts, ContainerCluster cluster) {
List<Container> nodes = new ArrayList<>();
for (Map.Entry<HostResource, ClusterMembership> entry : hosts.entrySet()) {
String id = "container." + entry.getValue().index();
Container container = new Container(cluster, id, entry.getValue().retired(), entry.getValue().index(), cluster.isHostedVespa());
container.setHostResource(entry.getKey());
- container.initService();
+ container.initService(deployLogger);
nodes.add(container);
}
return nodes;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
index 31e240b3ae3..8d0824f89e5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java
@@ -5,6 +5,7 @@ import com.yahoo.component.ComponentId;
import com.yahoo.component.ComponentSpecification;
import com.yahoo.component.chain.model.ChainSpecification;
import com.yahoo.component.provider.ComponentRegistry;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
import com.yahoo.config.model.ConfigModel;
import com.yahoo.config.model.ConfigModelContext;
@@ -79,7 +80,7 @@ public class Content extends ConfigModel {
*/
public Optional<ContainerCluster> ownedIndexingCluster() { return ownedIndexingCluster; }
- public void createTlds(ConfigModelRepo modelRepo) {
+ public void createTlds(DeployLogger deployLogger, ConfigModelRepo modelRepo) {
IndexedSearchCluster indexedCluster = cluster.getSearch().getIndexed();
if (indexedCluster == null) return;
@@ -91,9 +92,9 @@ public class Content extends ConfigModel {
if (containerCluster.getSearch() == null) continue; // this is not a qrs cluster
log.log(LogLevel.DEBUG, "Adding tlds for indexed cluster " + indexedCluster.getClusterName() + ", container cluster " + containerCluster.getName());
- indexedCluster.addTldsWithSameIdsAsContainers(tldParent, containerCluster);
+ indexedCluster.addTldsWithSameIdsAsContainers(deployLogger, tldParent, containerCluster);
}
- indexedCluster.setupDispatchGroups();
+ indexedCluster.setupDispatchGroups(deployLogger);
}
private static boolean containsIndexingChain(ComponentRegistry<DocprocChain> allChains, ChainSpecification chainSpec) {
@@ -329,7 +330,7 @@ public class Content extends ConfigModel {
index++;
docprocService.setBasePort(host.nextAvailableBaseport(docprocService.getPortCount()));
docprocService.setHostResource(host);
- docprocService.initService();
+ docprocService.initService(modelContext.getDeployLogger());
nodes.add(docprocService);
processedHosts.add(host);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index ec9cfb8ae76..f4754b4f958 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -235,11 +235,11 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
snode = SearchNode.create(parent, "" + node.getDistributionKey(), node.getDistributionKey(), spec,
clusterName, node, flushOnShutdown, tuning, parentGroup.getOwner().isHostedVespa());
snode.setHostResource(node.getHostResource());
- snode.initService();
+ snode.initService(deployState.getDeployLogger());
tls = new TransactionLogServer(snode, clusterName);
tls.setHostResource(snode.getHostResource());
- tls.initService();
+ tls.initService(deployState.getDeployLogger());
} else {
snode = new SearchNode.Builder(""+node.getDistributionKey(), spec, clusterName, node, flushOnShutdown, tuning).build(deployState, parent, element.getXml());
tls = new TransactionLogServer.Builder(clusterName).build(deployState, snode, element.getXml());
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 c035793f916..17ff15d3a77 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
@@ -470,13 +470,13 @@ public class StorageGroup {
private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) {
StorageNode sNode = new StorageNode(parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired());
sNode.setHostResource(hostResource);
- sNode.initService();
+ sNode.initService(deployState.getDeployLogger());
// TODO: Supplying null as XML is not very nice
PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, parentGroup, null);
Distributor d = new Distributor(parent.getDistributorNodes(), clusterMembership.index(), null, provider);
d.setHostResource(sNode.getHostResource());
- d.initService();
+ d.initService(deployState.getDeployLogger());
return sNode;
}
}
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 9aee78fabc1..7bb6e3dabd4 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
@@ -468,7 +468,7 @@ public class ContentCluster extends AbstractConfigProducer implements
for (HostResource host : hosts) {
ClusterControllerContainer clusterControllerContainer = new ClusterControllerContainer(clusterControllers, index, multitenant, deployState.isHosted());
clusterControllerContainer.setHostResource(host);
- clusterControllerContainer.initService();
+ clusterControllerContainer.initService(deployState.getDeployLogger());
clusterControllerContainer.setProp("clustertype", "admin")
.setProp("clustername", clusterControllers.getName())
.setProp("index", String.valueOf(index));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
index e38f6613843..4ff5fcab347 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroupBuilder.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.SimpleConfigProducer;
import com.yahoo.vespa.model.content.DispatchSpec;
@@ -29,24 +30,24 @@ public class DispatchGroupBuilder {
this.searchCluster = searchCluster;
}
- public void build(List<DispatchSpec.Group> groupsSpec,
- List<SearchNode> searchNodes) {
+ public void build(DeployLogger deployLogger, List<DispatchSpec.Group> groupsSpec, List<SearchNode> searchNodes) {
Map<Integer, SearchNode> searchNodeMap = buildSearchNodeMap(searchNodes);
for (int partId = 0; partId < groupsSpec.size(); ++partId) {
DispatchSpec.Group groupSpec = groupsSpec.get(partId);
DispatchGroup group = new DispatchGroup(searchCluster);
- populateDispatchGroup(group, groupSpec.getNodes(), searchNodeMap, partId);
+ populateDispatchGroup(deployLogger, group, groupSpec.getNodes(), searchNodeMap, partId);
}
}
- private void populateDispatchGroup(DispatchGroup group,
+ private void populateDispatchGroup(DeployLogger deployLogger,
+ DispatchGroup group,
List<DispatchSpec.Node> nodeList,
Map<Integer, SearchNode> searchNodesMap,
int partId) {
for (int rowId = 0; rowId < nodeList.size(); ++rowId) {
int distributionKey = nodeList.get(rowId).getDistributionKey();
SearchNode searchNode = searchNodesMap.get(distributionKey);
- Dispatch dispatch = buildDispatch(group, new NodeSpec(rowId, partId), distributionKey, searchNode.getHostResource());
+ Dispatch dispatch = buildDispatch(deployLogger, group, new NodeSpec(rowId, partId), distributionKey, searchNode.getHostResource());
group.addDispatcher(dispatch);
rootDispatch.addSearcher(dispatch);
@@ -65,10 +66,10 @@ public class DispatchGroupBuilder {
* The dispatch group that will contain this mid-level dispatcher is no longer part of the config producer tree,
* but only contains information about the dispatchers and searchers in this group.
*/
- private Dispatch buildDispatch(DispatchGroup group, NodeSpec nodeSpec, int distributionKey, HostResource hostResource) {
+ private Dispatch buildDispatch(DeployLogger deployLogger, DispatchGroup group, NodeSpec nodeSpec, int distributionKey, HostResource hostResource) {
Dispatch dispatch = Dispatch.createDispatchWithStableConfigId(group, dispatchParent, nodeSpec, distributionKey, 1);
dispatch.setHostResource(hostResource);
- dispatch.initService();
+ dispatch.initService(deployLogger);
return dispatch;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
index dbc07c85dd5..985b6e1e4b0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.search;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.log.LogLevel;
import com.yahoo.vespa.config.search.AttributesConfig;
@@ -74,7 +75,7 @@ public class IndexedSearchCluster extends SearchCluster
}
}
- public UnionConfiguration(AbstractConfigProducer parent, List<DocumentDatabase> docDbs) {
+ private UnionConfiguration(AbstractConfigProducer parent, List<DocumentDatabase> docDbs) {
super(parent, "union");
this.docDbs = docDbs;
}
@@ -92,7 +93,6 @@ public class IndexedSearchCluster extends SearchCluster
// This is the document selector string as derived from the subscription tag.
private String routingSelector = null;
- private DocumentSelectionConverter selectionConverter = null;
private List<DocumentDatabase> documentDbs = new LinkedList<>();
private final UnionConfiguration unionCfg;
private int maxNodesDownPerFixedRow = 0;
@@ -177,11 +177,11 @@ public class IndexedSearchCluster extends SearchCluster
return this;
}
- public Dispatch addTld(AbstractConfigProducer tldParent, HostResource hostResource) {
+ public Dispatch addTld(DeployLogger deployLogger, AbstractConfigProducer tldParent, HostResource hostResource) {
int index = rootDispatch.getDispatchers().size();
Dispatch tld = Dispatch.createTld(rootDispatch, tldParent, index);
tld.setHostResource(hostResource);
- tld.initService();
+ tld.initService(deployLogger);
rootDispatch.addDispatcher(tld);
return tld;
}
@@ -193,7 +193,7 @@ public class IndexedSearchCluster extends SearchCluster
* @param tldParent the indexed search cluster the tlds to add should be connected to
* @param containerCluster the container cluster that should use the tlds created for searching the indexed search cluster above
*/
- public void addTldsWithSameIdsAsContainers(AbstractConfigProducer tldParent, ContainerCluster containerCluster) {
+ public void addTldsWithSameIdsAsContainers(DeployLogger deployLogger, AbstractConfigProducer tldParent, ContainerCluster containerCluster) {
for (Container container : containerCluster.getContainers()) {
String containerSubId = container.getSubId();
if ( ! containerSubId.contains(".")) {
@@ -204,14 +204,14 @@ public class IndexedSearchCluster extends SearchCluster
log.log(LogLevel.DEBUG, "Adding tld with index " + containerIndex + " for content cluster " + this.getClusterName() +
", container cluster " + containerClusterName + " (container id " + containerSubId +
") on host " + container.getHostResource().getHostname());
- rootDispatch.addDispatcher(createTld(tldParent, container.getHostResource(), containerClusterName, containerIndex));
+ rootDispatch.addDispatcher(createTld(deployLogger, tldParent, container.getHostResource(), containerClusterName, containerIndex));
}
}
- public Dispatch createTld(AbstractConfigProducer tldParent, HostResource hostResource, String containerClusterName, int containerIndex) {
+ private Dispatch createTld(DeployLogger deployLogger, AbstractConfigProducer tldParent, HostResource hostResource, String containerClusterName, int containerIndex) {
Dispatch tld = Dispatch.createTldWithContainerIdInName(rootDispatch, tldParent, containerClusterName, containerIndex);
tld.setHostResource(hostResource);
- tld.initService();
+ tld.initService(deployLogger);
return tld;
}
@@ -241,7 +241,7 @@ public class IndexedSearchCluster extends SearchCluster
}
}
- protected void fillDocumentDBConfig(DocumentDatabase sdoc, ProtonConfig.Documentdb.Builder ddbB) {
+ private void fillDocumentDBConfig(DocumentDatabase sdoc, ProtonConfig.Documentdb.Builder ddbB) {
ddbB.inputdoctypename(sdoc.getInputDocType())
.configid(sdoc.getConfigId())
.visibilitydelay(getVisibilityDelay());
@@ -264,7 +264,7 @@ public class IndexedSearchCluster extends SearchCluster
this.routingSelector=sel;
if (this.routingSelector != null) {
try {
- this.selectionConverter = new DocumentSelectionConverter(this.routingSelector);
+ new DocumentSelectionConverter(this.routingSelector);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid routing selector: " + e.getMessage());
}
@@ -278,9 +278,11 @@ public class IndexedSearchCluster extends SearchCluster
if ((routingSelector == null) && !getDocumentNames().isEmpty()) {
Iterator<String> it = getDocumentNames().iterator();
routingSelector = it.next();
+ StringBuilder sb = new StringBuilder(routingSelector);
while (it.hasNext()) {
- routingSelector += " or " + it.next();
+ sb.append(" or ").append(it.next());
}
+ routingSelector = sb.toString();
}
}
@Override
@@ -308,7 +310,7 @@ public class IndexedSearchCluster extends SearchCluster
this.searchCoverage = searchCoverage;
}
- public SearchCoverage getSearchCoverage() {
+ SearchCoverage getSearchCoverage() {
return searchCoverage;
}
@@ -336,9 +338,9 @@ public class IndexedSearchCluster extends SearchCluster
}
@Override
- protected void exportSdFiles(File toDir) throws IOException { }
+ protected void exportSdFiles(File toDir) { }
- public int getMinNodesPerColumn() { return 0; }
+ int getMinNodesPerColumn() { return 0; }
boolean useFixedRowInDispatch() {
for (SearchNode node : getSearchNodes()) {
@@ -356,7 +358,7 @@ public class IndexedSearchCluster extends SearchCluster
public void setMaxNodesDownPerFixedRow(int value) {
maxNodesDownPerFixedRow = value;
}
- public int getSearchableCopies() {
+ int getSearchableCopies() {
return searchableCopies;
}
@@ -381,12 +383,12 @@ public class IndexedSearchCluster extends SearchCluster
return dispatchSpec != null && dispatchSpec.getGroups() != null && !dispatchSpec.getGroups().isEmpty();
}
- public void setupDispatchGroups() {
+ public void setupDispatchGroups(DeployLogger deployLogger) {
if (!useMultilevelDispatchSetup()) {
return;
}
rootDispatch.clearSearchers();
- new DispatchGroupBuilder(dispatchParent, rootDispatch, this).build(dispatchSpec.getGroups(), getSearchNodes());
+ new DispatchGroupBuilder(dispatchParent, rootDispatch, this).build(deployLogger, dispatchSpec.getGroups(), getSearchNodes());
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
index 57bec93e6f4..17d56011ce3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/HostResourceTest.java
@@ -28,20 +28,23 @@ public class HostResourceTest {
@Test
public void next_available_baseport_is_BASE_PORT_when_no_ports_have_been_reserved() {
- HostResource host = mockHostResource();
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
assertThat(host.nextAvailableBaseport(1), is(HostResource.BASE_PORT));
}
@Test
public void next_available_baseport_is_BASE_PORT_plus_one_when_one_port_has_been_reserved() {
- HostResource host = mockHostResource();
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
host.reservePort(new TestService(1), HostResource.BASE_PORT);
assertThat(host.nextAvailableBaseport(1), is(HostResource.BASE_PORT + 1));
}
@Test
public void no_available_baseport_when_service_requires_more_consecutive_ports_than_available() {
- HostResource host = mockHostResource();
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
for (int p = HostResource.BASE_PORT; p < HostResource.BASE_PORT + HostResource.MAX_PORTS; p += 2) {
host.reservePort(new TestService(1), p);
@@ -58,8 +61,10 @@ public class HostResourceTest {
@Test
public void require_exception_when_no_matching_hostalias() {
TestService service = new TestService(1);
+ MockRoot root = new MockRoot();
+
try {
- service.initService();
+ service.initService(root.deployLogger());
} catch (RuntimeException e) {
assertThat(e.getMessage(), endsWith("No host found for service 'hostresourcetest$testservice0'. " +
"The hostalias is probably missing from hosts.xml."));
@@ -68,28 +73,32 @@ public class HostResourceTest {
@Test
public void port_above_vespas_port_range_can_be_reserved() {
- HostResource host = mockHostResource();
- host.allocateService(new TestService(1), HostResource.BASE_PORT + HostResource.MAX_PORTS + 1);
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
+
+ host.allocateService(root.deployLogger(), new TestService(1), HostResource.BASE_PORT + HostResource.MAX_PORTS + 1);
}
@Test(expected = RuntimeException.class)
public void allocating_same_port_throws_exception() {
- HostResource host = mockHostResource();
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
TestService service1 = new TestService(1);
TestService service2 = new TestService(1);
- host.allocateService(service1, HostResource.BASE_PORT);
- host.allocateService(service2, HostResource.BASE_PORT);
+ host.allocateService(root.deployLogger(), service1, HostResource.BASE_PORT);
+ host.allocateService(root.deployLogger(), service2, HostResource.BASE_PORT);
}
@Test(expected = RuntimeException.class)
public void allocating_overlapping_ports_throws_exception() {
- HostResource host = mockHostResource();
+ MockRoot root = new MockRoot();
+ HostResource host = mockHostResource(root);
TestService service2 = new TestService(2);
TestService service1 = new TestService(1);
- host.allocateService(service2, HostResource.BASE_PORT);
- host.allocateService(service1, HostResource.BASE_PORT + 1);
+ host.allocateService(root.deployLogger(), service2, HostResource.BASE_PORT);
+ host.allocateService(root.deployLogger(), service1, HostResource.BASE_PORT + 1);
}
@Test
@@ -147,14 +156,12 @@ public class HostResourceTest {
return ClusterSpec.from(type, ClusterSpec.Id.from(id), ClusterSpec.Group.from(0), Version.fromString("6.42"), false);
}
- private HostResource mockHostResource() {
- MockRoot mockRoot = new MockRoot();
- return new HostResource(new Host(mockRoot));
+ private HostResource mockHostResource(MockRoot root) {
+ return new HostResource(new Host(root));
}
private static HostResource hostResourceWithMemberships(ClusterMembership... memberships) {
- MockRoot root = new MockRoot();
- HostResource host = new HostResource(Host.createHost(root.deployLogger(),null, "hostname"));
+ HostResource host = new HostResource(Host.createHost(null, "hostname"));
Arrays.asList(memberships).forEach(host::addClusterMembership);
return host;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 1918b8afb8f..6067494dec9 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model.container;
import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.cloud.config.RoutingProviderConfig;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.test.MockRoot;
@@ -87,30 +88,32 @@ public class ContainerClusterTest {
assertEquals("cd", config.system());
}
- private ContainerCluster createContainerCluster(boolean isHosted, boolean isCombinedCluster) {
- return createContainerCluster(isHosted, isCombinedCluster, Optional.empty(), Optional.empty());
+ private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster) {
+ return createContainerCluster(root, isCombinedCluster, Optional.empty(), Optional.empty());
}
- private ContainerCluster createClusterControllerCluster() {
- return createContainerCluster(false, false, new ClusterControllerClusterVerifier());
+ private ContainerCluster createClusterControllerCluster(MockRoot root) {
+ return createContainerCluster(root, false, new ClusterControllerClusterVerifier());
}
- private ContainerCluster createContainerCluster(boolean isHosted, boolean isCombinedCluster, ContainerClusterVerifier extraComponents) {
- return createContainerCluster(isHosted, isCombinedCluster, Optional.empty(), Optional.of(extraComponents));
+ private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster, ContainerClusterVerifier extraComponents) {
+ return createContainerCluster(root, isCombinedCluster, Optional.empty(), Optional.of(extraComponents));
}
- private ContainerCluster createContainerCluster(boolean isHosted, boolean isCombinedCluster,
+ private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster,
Optional<Integer> memoryPercentage) {
- return createContainerCluster(isHosted, isCombinedCluster, memoryPercentage, Optional.empty());
+ return createContainerCluster(root, isCombinedCluster, memoryPercentage, Optional.empty());
}
- private ContainerCluster createContainerCluster(boolean isHosted, boolean isCombinedCluster,
- Optional<Integer> memoryPercentage, Optional<ContainerClusterVerifier> extraComponents) {
+ private MockRoot createRoot(boolean isHosted) {
DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build();
- MockRoot root = new MockRoot("foo", state);
+ return new MockRoot("foo", state);
+ }
+ private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster,
+ Optional<Integer> memoryPercentage, Optional<ContainerClusterVerifier> extraComponents) {
ContainerCluster cluster = extraComponents.isPresent()
- ? new ContainerCluster(root, "container0", "container1", extraComponents.get(), state)
- : new ContainerCluster(root, "container0", "container1", state);
+ ? new ContainerCluster(root, "container0", "container1", extraComponents.get(), root.getDeployState())
+ : new ContainerCluster(root, "container0", "container1", root.getDeployState());
if (isCombinedCluster)
cluster.setHostClusterId("test-content-cluster");
cluster.setMemoryPercentage(memoryPercentage);
@@ -120,7 +123,7 @@ public class ContainerClusterTest {
private void verifyHeapSizeAsPercentageOfPhysicalMemory(boolean isHosted, boolean isCombinedCluster,
Optional<Integer> explicitMemoryPercentage,
int expectedMemoryPercentage) {
- ContainerCluster cluster = createContainerCluster(isHosted, isCombinedCluster, explicitMemoryPercentage);
+ ContainerCluster cluster = createContainerCluster(createRoot(isHosted), isCombinedCluster, explicitMemoryPercentage);
QrStartConfig.Builder qsB = new QrStartConfig.Builder();
cluster.getSearch().getConfig(qsB);
QrStartConfig qsC= new QrStartConfig(qsB);
@@ -153,11 +156,12 @@ public class ContainerClusterTest {
}
}
private void verifyJvmArgs(boolean isHosted, boolean hasDocProc) {
- ContainerCluster cluster = createContainerCluster(isHosted, false);
+ MockRoot root = createRoot(isHosted);
+ ContainerCluster cluster = createContainerCluster(root, false);
if (hasDocProc) {
cluster.setDocproc(new ContainerDocproc(cluster, null));
}
- addContainer(cluster, "c1", "host-c1");
+ addContainer(root.deployLogger(), cluster, "c1", "host-c1");
assertEquals(1, cluster.getContainers().size());
Container container = cluster.getContainers().get(0);
verifyJvmArgs(isHosted, hasDocProc, "", container.getJvmArgs());
@@ -173,8 +177,9 @@ public class ContainerClusterTest {
@Test
public void testContainerClusterMaxThreads() {
- ContainerCluster cluster = createContainerCluster(false, false);
- addContainer(cluster, "c1","host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createContainerCluster(root, false);
+ addContainer(root.deployLogger(), cluster, "c1","host-c1");
ThreadpoolConfig.Builder tpBuilder = new ThreadpoolConfig.Builder();
cluster.getConfig(tpBuilder);
@@ -184,8 +189,9 @@ public class ContainerClusterTest {
@Test
public void testClusterControllerResourceUsage() {
- ContainerCluster cluster = createClusterControllerCluster();
- addClusterController(cluster, "host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createClusterControllerCluster(root);
+ addClusterController(root.deployLogger(), cluster, "host-c1");
assertEquals(1, cluster.getContainers().size());
ClusterControllerContainer container = (ClusterControllerContainer) cluster.getContainers().get(0);
QrStartConfig.Builder qrBuilder = new QrStartConfig.Builder();
@@ -201,10 +207,11 @@ public class ContainerClusterTest {
@Test
public void testThatYouCanNotAddNonClusterControllerContainerToClusterControllerCluster() {
- ContainerCluster cluster = createClusterControllerCluster();
- addClusterController(cluster, "host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createClusterControllerCluster(root);
+ addClusterController(root.deployLogger(), cluster, "host-c1");
try {
- addContainer(cluster, "c2", "host-c2");
+ addContainer(root.deployLogger(), cluster, "c2", "host-c2");
assertTrue(false);
} catch (IllegalArgumentException e) {
assertEquals("Cluster container1 does not accept container qrserver on host 'host-c2'", e.getMessage());
@@ -213,15 +220,17 @@ public class ContainerClusterTest {
@Test
public void testThatLinguisticsIsExcludedForClusterControllerCluster() {
- ContainerCluster cluster = createClusterControllerCluster();
- addClusterController(cluster, "host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createClusterControllerCluster(root);
+ addClusterController(root.deployLogger(), cluster, "host-c1");
assertFalse(contains("com.yahoo.language.provider.SimpleLinguisticsProvider", cluster.getAllComponents()));
}
@Test
public void testThatLinguisticsIsIncludedForNonClusterControllerClusters() {
- ContainerCluster cluster = createContainerCluster(false, false);
- addClusterController(cluster, "host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createContainerCluster(root, false);
+ addClusterController(root.deployLogger(), cluster, "host-c1");
assertTrue(contains("com.yahoo.language.provider.SimpleLinguisticsProvider", cluster.getAllComponents()));
}
@@ -242,8 +251,9 @@ public class ContainerClusterTest {
@Test
public void requireThatWeCanhandleNull() {
- ContainerCluster cluster = createContainerCluster(false, false);
- addContainer(cluster, "c1", "host-c1");
+ MockRoot root = createRoot(false);
+ ContainerCluster cluster = createContainerCluster(root, false);
+ addContainer(root.deployLogger(), cluster, "c1", "host-c1");
Container container = cluster.getContainers().get(0);
container.setJvmArgs("");
String empty = container.getJvmArgs();
@@ -264,24 +274,25 @@ public class ContainerClusterTest {
}
- private static void addContainer(ContainerCluster cluster, String name, String hostName) {
+ private static void addContainer(DeployLogger deployLogger, ContainerCluster cluster, String name, String hostName) {
Container container = new Container(cluster, name, 0, cluster.isHostedVespa());
container.setHostResource(new HostResource(new Host(null, hostName)));
- container.initService();
+ container.initService(deployLogger);
cluster.addContainer(container);
}
- private static void addClusterController(ContainerCluster cluster, String hostName) {
+ private static void addClusterController(DeployLogger deployLogger, ContainerCluster cluster, String hostName) {
Container container = new ClusterControllerContainer(cluster, 1, false, cluster.isHostedVespa());
container.setHostResource(new HostResource(new Host(null, hostName)));
- container.initService();
+ container.initService(deployLogger);
cluster.addContainer(container);
}
private static ContainerCluster newContainerCluster() {
- ContainerCluster cluster = new ContainerCluster(null, "subId", "name", DeployState.createTestState());
- addContainer(cluster, "c1", "host-c1");
- addContainer(cluster, "c2", "host-c2");
+ DeployState deployState = DeployState.createTestState();
+ ContainerCluster cluster = new ContainerCluster(null, "subId", "name", deployState);
+ addContainer(deployState.getDeployLogger(), cluster, "c1", "host-c1");
+ addContainer(deployState.getDeployLogger(), cluster, "c2", "host-c2");
return cluster;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
index fd25ae2ae48..4749ef314b4 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/IndexedHierarchicDistributionTest.java
@@ -36,7 +36,8 @@ import static org.junit.Assert.assertTrue;
public class IndexedHierarchicDistributionTest {
private ContentCluster addDispatcher(ContentCluster c) {
- c.getSearch().getIndexed().addTld(new SimpleConfigProducer(new MockRoot(""), ""), new HostResource(new Host(new MockRoot(""), "mockhost")));
+ MockRoot root = new MockRoot("");
+ c.getSearch().getIndexed().addTld(root.deployLogger(), new SimpleConfigProducer(root, ""), new HostResource(new Host(root, "mockhost")));
return c;
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
index 84f414a3bae..7ccf5937490 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/MultilevelDispatchTest.java
@@ -92,8 +92,8 @@ public class MultilevelDispatchTest {
AbstractConfigProducer<Dispatch> dispatchParent = new SimpleConfigProducer<>(root, "tlds");
HostResource hostResource = new HostResource(new Host(root, "mockhost"));
IndexedSearchCluster index = cluster.getSearch().getIndexed();
- index.addTld(dispatchParent, hostResource);
- index.setupDispatchGroups();
+ index.addTld(root.deployLogger(), dispatchParent, hostResource);
+ index.setupDispatchGroups(root.deployLogger());
root.freezeModelTopology();
cluster.validate();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
index 715676f712c..3b2eb97c0cc 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/search/test/SearchNodeTest.java
@@ -39,11 +39,11 @@ public class SearchNodeTest {
TransactionLogServer tls = new TransactionLogServer(root, "mycluster");
tls.setHostResource(new HostResource(host));
tls.setBasePort(100);
- tls.initService();
+ tls.initService(root.deployLogger());
node.setTls(tls);
node.setHostResource(new HostResource(host));
node.setBasePort(200);
- node.initService();
+ node.initService(root.deployLogger());
root.freezeModelTopology();
}
@@ -65,7 +65,7 @@ public class SearchNodeTest {
MockRoot root = new MockRoot("");
SearchNode node = createSearchNode(root, "mynode", 3, new NodeSpec(7, 5), false, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode")));
- node.initService();
+ node.initService(root.deployLogger());
assertFalse(node.getPreShutdownCommand().isPresent());
}
@@ -74,7 +74,7 @@ public class SearchNodeTest {
MockRoot root = new MockRoot("");
SearchNode node = createSearchNode(root, "mynode2", 4, new NodeSpec(7, 5), true, root.getDeployState().isHosted());
node.setHostResource(new HostResource(new Host(node, "mynbode2")));
- node.initService();
+ node.initService(root.deployLogger());
assertTrue(node.getPreShutdownCommand().isPresent());
Assert.assertThat(node.getPreShutdownCommand().get(),
CoreMatchers.containsString("vespa-proton-cmd " + node.getRpcPort() + " prepareRestart"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
index ca1f0454a94..57b0606457d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.test;
import com.yahoo.component.ComponentId;
+import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.ConfigModel;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.ConfigModelRegistry;
@@ -104,13 +105,13 @@ public class ModelAmendingTestCase {
@Override
public void doBuild(AdminModelAmender model, Element spec, ConfigModelContext modelContext) {
for (AdminModel adminModel : model.adminModels)
- amend(adminModel);
+ amend(modelContext.getDeployLogger(), adminModel);
}
- private void amend(AdminModel adminModel) {
+ private void amend(DeployLogger deployLogger, AdminModel adminModel) {
for (HostResource host : adminModel.getAdmin().getHostSystem().getHosts()) {
if ( ! host.getHost().getChildrenByTypeRecursive(AmendedService.class).isEmpty()) continue; // already amended
- adminModel.getAdmin().addAndInitializeService(host, new AmendedService(host.getHost()));
+ adminModel.getAdmin().addAndInitializeService(deployLogger, host, new AmendedService(host.getHost()));
}
}