aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-07 12:09:52 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-07 12:09:52 +0100
commit2c4ea0a81062c3effa25ec42d44d0fc86adb1980 (patch)
tree0c9584645b17b637e602573792345e06de6ae4dc /config-model/src/main/java/com
parentdb2e29ca7f14e0e95f457402bd62203ff077923f (diff)
- Adde featureflag for controlling environment variables.
- Use general environment mechanism for existing ad-hoc environment variables.
Diffstat (limited to 'config-model/src/main/java/com')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/AbstractService.java124
-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/xml/dom/DomAdminBuilderBase.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/Container.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java15
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/Content.java2
-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.java16
-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/SearchNode.java6
14 files changed, 112 insertions, 135 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 62e78db0e6f..f76cb6e43cc 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.deploy;
-import com.google.common.collect.ImmutableList;
import com.yahoo.config.model.api.ConfigServerSpec;
import com.yahoo.config.model.api.ContainerEndpoint;
import com.yahoo.config.model.api.EndpointCertificateSecrets;
@@ -75,6 +74,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private double persistenceThrottlingWsDecrementFactor = 1.2;
private double persistenceThrottlingWsBackoff = 0.95;
private boolean useV8GeoPositions = false;
+ private List<String> environmentVariables = List.of();
@Override public ModelContext.FeatureFlags featureFlags() { return this; }
@Override public boolean multitenant() { return multitenant; }
@@ -129,6 +129,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public double persistenceThrottlingWsDecrementFactor() { return persistenceThrottlingWsDecrementFactor; }
@Override public double persistenceThrottlingWsBackoff() { return persistenceThrottlingWsBackoff; }
@Override public boolean useV8GeoPositions() { return useV8GeoPositions; }
+ @Override public List<String> environmentVariables() { return environmentVariables; }
public TestProperties maxUnCommittedMemory(int maxUnCommittedMemory) {
this.maxUnCommittedMemory = maxUnCommittedMemory;
@@ -222,7 +223,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
}
public TestProperties setConfigServerSpecs(List<Spec> configServerSpecs) {
- this.configServerSpecs = ImmutableList.copyOf(configServerSpecs);
+ this.configServerSpecs = List.copyOf(configServerSpecs);
return this;
}
@@ -341,6 +342,11 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
return this;
}
+ public TestProperties setEnvironmentVariables(List<String> value) {
+ this.environmentVariables = value;
+ return this;
+ }
+
public static class Spec implements ConfigServerSpec {
private final String hostName;
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 78cbb722bc7..6777e2fb741 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
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model;
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.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.defaults.Defaults;
@@ -16,6 +17,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
+import java.util.TreeMap;
+import java.util.stream.Collectors;
import static com.yahoo.text.Lowercase.toLowerCase;
@@ -54,19 +57,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
// Please keep non-null, as passed to command line in service startup
private String preload = null;
- // If larger or equal to 0 it mean that explicit mmaps shall not be included in coredump.
- private long mmapNoCoreLimit = -1L;
-
- // If this is true it will dump core when OOM
- private boolean coreOnOOM = false;
-
- // If greater than 0, controls the number of threads used by open mp
- private int ompNumThreads = 0;
-
- private String noVespaMalloc = "";
- private String vespaMalloc = "";
- private String vespaMallocDebug = "";
- private String vespaMallocDebugStackTrace = "";
+ private final Map<String, Object> environmentVariables = new TreeMap<>();
/** The ports metainfo object */
protected PortsMeta portsMeta = new PortsMeta();
@@ -97,6 +88,8 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
*/
public AbstractService(AbstractConfigProducer<?> parent, String name) {
super(parent, name);
+ environmentVariables.put("OMP_NUM_THREADS", 1);
+ environmentVariables.put("VESPA_SILENCE_CORE_ON_OOM", true);
}
/**
@@ -105,7 +98,7 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
* @param name the name of this service.
*/
public AbstractService(String name) {
- super(name);
+ this(null, name);
}
@Override
@@ -139,7 +132,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(DeployLogger deployLogger, HostResource hostResource, int userPort) {
+ private void initService(DeployState deployState, HostResource hostResource, int userPort) {
if (initialized) {
throw new IllegalStateException("Service '" + getConfigId() + "' already initialized.");
}
@@ -148,16 +141,19 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
"The hostalias is probably missing from hosts.xml.");
}
id = getIndex(hostResource);
- ports = hostResource.allocateService(deployLogger, this, getInstanceWantedPort(userPort));
+ ports = hostResource.allocateService(deployState.getDeployLogger(), this, getInstanceWantedPort(userPort));
initialized = true;
+ for(String envVar : deployState.getProperties().environmentVariables()) {
+ addEnvironmentVariable(envVar);
+ }
}
/**
* 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(DeployLogger deployLogger) {
- initService(deployLogger, this.hostResource, this.basePort);
+ public void initService(DeployState deployState) {
+ initService(deployState, this.hostResource, this.basePort);
}
/**
@@ -381,60 +377,44 @@ public abstract class AbstractService extends AbstractConfigProducer<AbstractCon
public void setPreLoad(String preload) {
this.preload = preload;
}
- public long getMMapNoCoreLimit() { return mmapNoCoreLimit; }
- public void setMMapNoCoreLimit(long noCoreLimit) { this.mmapNoCoreLimit = noCoreLimit; }
- public boolean getCoreOnOOM() { return coreOnOOM; }
- public void setCoreOnOOM(boolean coreOnOOM) { this.coreOnOOM = coreOnOOM; }
- public int getOmpNumThreads() { return ompNumThreads; }
- public void setOmpNumThreads(int value) { ompNumThreads = value; }
-
- public String getNoVespaMalloc() { return noVespaMalloc; }
- public String getVespaMalloc() { return vespaMalloc; }
- public String getVespaMallocDebug() { return vespaMallocDebug; }
- public String getVespaMallocDebugStackTrace() { return vespaMallocDebugStackTrace; }
- public void setNoVespaMalloc(String s) { noVespaMalloc = s; }
- public void setVespaMalloc(String s) { vespaMalloc = s; }
- public void setVespaMallocDebug(String s) { vespaMallocDebug = s; }
- public void setVespaMallocDebugStackTrace(String s) { vespaMallocDebugStackTrace = s; }
-
- public String getMMapNoCoreEnvVariable() {
- return (getMMapNoCoreLimit() >= 0L)
- ? "VESPA_MMAP_NOCORE_LIMIT=" + getMMapNoCoreLimit() + " "
- : "";
- }
-
- public String getCoreOnOOMEnvVariable() {
- return getCoreOnOOM() ? "" : "VESPA_SILENCE_CORE_ON_OOM=true ";
- }
- public String getOmpNumThreadsEnvVariable() {
- return (getOmpNumThreads() == 0)
- ? ""
- : "OMP_NUM_THREADS=" + getOmpNumThreads() + " ";
- }
- public String getNoVespaMallocEnvVariable() {
- return "".equals(getNoVespaMalloc())
- ? ""
- : "VESPA_USE_NO_VESPAMALLOC=\"" + getNoVespaMalloc() + "\" ";
- }
- public String getVespaMallocEnvVariable() {
- return "".equals(getVespaMalloc())
- ? ""
- : "VESPA_USE_VESPAMALLOC=\"" + getVespaMalloc() + "\" ";
- }
- public String getVespaMallocDebugEnvVariable() {
- return "".equals(getVespaMallocDebug())
- ? ""
- : "VESPA_USE_VESPAMALLOC_D=\"" + getVespaMallocDebug() + "\" ";
- }
- public String getVespaMallocDebugStackTraceEnvVariable() {
- return "".equals(getVespaMallocDebugStackTrace())
- ? ""
- : "VESPA_USE_VESPAMALLOC_DST=\"" + getVespaMallocDebugStackTrace() + "\" ";
- }
-
- public String getEnvVariables() {
- return getCoreOnOOMEnvVariable() + getOmpNumThreadsEnvVariable() + getMMapNoCoreEnvVariable() + getNoVespaMallocEnvVariable() +
- getVespaMallocEnvVariable() + getVespaMallocDebugEnvVariable() + getVespaMallocDebugStackTraceEnvVariable();
+ /** If larger or equal to 0 it mean that explicit mmaps shall not be included in coredump.*/
+ public void setMMapNoCoreLimit(long noCoreLimit) {
+ if (noCoreLimit >= 0) {
+ environmentVariables.put("VESPA_MMAP_NOCORE_LIMIT", noCoreLimit);
+ } else {
+ environmentVariables.remove("VESPA_MMAP_NOCORE_LIMIT");
+ }
+ }
+ public void setCoreOnOOM(boolean coreOnOOM) {
+ if ( ! coreOnOOM) {
+ environmentVariables.put("VESPA_SILENCE_CORE_ON_OOM", true);
+ } else {
+ environmentVariables.remove("VESPA_SILENCE_CORE_ON_OOM");
+ }
+ }
+
+ public void setNoVespaMalloc(String s) { environmentVariables.put("VESPA_USE_NO_VESPAMALLOC", s); }
+ public void setVespaMalloc(String s) { environmentVariables.put("VESPA_USE_VESPAMALLOC", s); }
+ public void setVespaMallocDebug(String s) { environmentVariables.put("VESPA_USE_VESPAMALLOC_D", s); }
+ public void setVespaMallocDebugStackTrace(String s) { environmentVariables.put("VESPA_USE_VESPAMALLOC_DST", s); }
+
+ private static String toEnvValue(Object o) {
+ if (o instanceof Number || o instanceof Boolean) {
+ return o.toString();
+ }
+ return '"' + o.toString() + '"';
+ }
+
+ public void addEnvironmentVariable(String nameAndValue) {
+ int pos = nameAndValue.indexOf('=');
+ environmentVariables.put(nameAndValue.substring(0, pos), nameAndValue.substring(pos+1));
+ }
+ public void addEnvironmentVariable(String name, Object value) {
+ environmentVariables.put(name, value);
+ }
+
+ public String getEnv() {
+ return environmentVariables.entrySet().stream().map(e -> e.getKey() + '=' + toEnvValue(e.getValue())).collect(Collectors.joining(" "));
}
/**
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 2692d676d2b..e299689d1c7 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
@@ -5,7 +5,6 @@ import com.yahoo.config.model.api.ModelContext;
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.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
@@ -168,7 +167,7 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
Slobrok slobrok = new Slobrok(this, clusterController.index(), deployState.featureFlags());
slobrok.setHostResource(clusterController.getHostResource());
slobroks.add(slobrok);
- slobrok.initService(deployState.getDeployLogger());
+ slobrok.initService(deployState);
}
return slobroks;
}
@@ -237,16 +236,16 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
// Send hostname to be used in configId (instead of index), as the sorting of hosts seems to be unstable
// between config changes, even when the set of hosts is unchanged.
var container = new MetricsProxyContainer(metricsProxyCluster, host, index, deployState);
- addAndInitializeService(deployState.getDeployLogger(), host, container);
+ addAndInitializeService(deployState, host, container);
metricsProxyCluster.addContainer(container);
}
}
private void addCommonServices(HostResource host, DeployState deployState) {
- addConfigSentinel(deployState.getDeployLogger(), host, deployState.getProperties().applicationId(), deployState.zone(),
+ addConfigSentinel(deployState, host, deployState.getProperties().applicationId(), deployState.zone(),
deployState.featureFlags());
- addLogd(deployState.getDeployLogger(), host);
- addConfigProxy(deployState.getDeployLogger(), host);
+ addLogd(deployState, host);
+ addConfigProxy(deployState, host);
addFileDistribution(host);
if (logForwarderConfig != null) {
boolean actuallyAdd = true;
@@ -259,34 +258,34 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
}
}
if (actuallyAdd) {
- addLogForwarder(deployState.getDeployLogger(), host);
+ addLogForwarder(deployState, host);
}
}
}
- private void addConfigSentinel(DeployLogger deployLogger, HostResource host,
+ private void addConfigSentinel(DeployState deployState, HostResource host,
ApplicationId applicationId, Zone zone, ModelContext.FeatureFlags featureFlags)
{
ConfigSentinel configSentinel = new ConfigSentinel(host.getHost(), applicationId, zone, featureFlags);
- addAndInitializeService(deployLogger, host, configSentinel);
+ addAndInitializeService(deployState, host, configSentinel);
host.getHost().setConfigSentinel(configSentinel);
}
- private void addLogForwarder(DeployLogger deployLogger, HostResource host) {
- addAndInitializeService(deployLogger, host, new LogForwarder(host.getHost(), logForwarderConfig));
+ private void addLogForwarder(DeployState deployState, HostResource host) {
+ addAndInitializeService(deployState, host, new LogForwarder(host.getHost(), logForwarderConfig));
}
- private void addLogd(DeployLogger deployLogger, HostResource host) {
- addAndInitializeService(deployLogger, host, new Logd(host.getHost()));
+ private void addLogd(DeployState deployState, HostResource host) {
+ addAndInitializeService(deployState, host, new Logd(host.getHost()));
}
- private void addConfigProxy(DeployLogger deployLogger, HostResource host) {
- addAndInitializeService(deployLogger, host, new ConfigProxy(host.getHost()));
+ private void addConfigProxy(DeployState deployState, HostResource host) {
+ addAndInitializeService(deployState, host, new ConfigProxy(host.getHost()));
}
- public void addAndInitializeService(DeployLogger deployLogger, HostResource host, AbstractService service) {
+ public void addAndInitializeService(DeployState deployState, HostResource host, AbstractService service) {
service.setHostResource(host);
- service.initService(deployLogger);
+ service.initService(deployState);
}
private void addFileDistribution(HostResource host) {
@@ -300,7 +299,7 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
List<Slobrok> slobs = new ArrayList<>();
if (logserver != null) {
Slobrok slobrok = new Slobrok(this, 0, deployState.featureFlags());
- addAndInitializeService(deployState.getDeployLogger(), logserver.getHostResource(), slobrok);
+ addAndInitializeService(deployState, logserver.getHostResource(), slobrok);
slobs.add(slobrok);
}
@@ -309,7 +308,7 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
HostResource host = hosts.get(n);
if ((logserver== null || host != logserver.getHostResource()) && ! host.getHost().runsConfigServer()) {
Slobrok newSlobrok = new Slobrok(this, slobs.size(), deployState.featureFlags());
- addAndInitializeService(deployState.getDeployLogger(), host, newSlobrok);
+ addAndInitializeService(deployState, host, newSlobrok);
slobs.add(newSlobrok);
}
n++;
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 56f462805bd..4c74282c061 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
@@ -45,7 +45,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
this.configServerSpecs = configServerSpecs;
}
- List<Configserver> getConfigServersFromSpec(DeployLogger deployLogger, AbstractConfigProducer<?> parent) {
+ List<Configserver> getConfigServersFromSpec(DeployState deployState, AbstractConfigProducer<?> parent) {
List<Configserver> configservers = new ArrayList<>();
for (ConfigServerSpec spec : configServerSpecs) {
HostSystem hostSystem = parent.hostSystem();
@@ -54,7 +54,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
Configserver configserver = new Configserver(parent, spec.getHostName(), spec.getConfigServerPort());
configserver.setHostResource(host);
configserver.setBasePort(configserver.getWantedPort());
- configserver.initService(deployLogger);
+ configserver.initService(deployState);
configservers.add(configserver);
}
return configservers;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index 5aaba9550d2..8e7c543b67b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -53,7 +53,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) {
List<Configserver> configservers;
if (multitenant)
- configservers = getConfigServersFromSpec(deployState.getDeployLogger(), admin);
+ configservers = getConfigServersFromSpec(deployState, admin);
else
configservers = getConfigServers(deployState, admin, adminE);
if (configservers.isEmpty() && ! multitenant)
@@ -129,7 +129,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
SimpleConfigProducer<?> configServers = new SimpleConfigProducer<>(parent, "configservers");
Configserver configServer = new Configserver(configServers, "configserver", Configserver.defaultRpcPort);
configServer.setHostResource(parent.hostSystem().getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC));
- configServer.initService(deployState.getDeployLogger());
+ configServer.initService(deployState);
return List.of(configServer);
}
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 41baf2db3aa..a91a7949ad8 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,7 +1,6 @@
// Copyright Yahoo. 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;
@@ -44,7 +43,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
@Override
protected void doBuildAdmin(DeployState deployState, Admin admin, Element w3cAdminElement) {
ModelElement adminElement = new ModelElement(w3cAdminElement);
- admin.addConfigservers(getConfigServersFromSpec(deployState.getDeployLogger(), admin));
+ admin.addConfigservers(getConfigServersFromSpec(deployState, admin));
// Note: These two elements only exists in admin version 4.0
// This build handles admin version 3.0 by ignoring its content (as the content is not useful)
@@ -79,13 +78,13 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
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);
+ Logserver logserver = createLogserver(deployState, admin, hosts);
createContainerOnLogserverHost(deployState, admin, logserver.getHostResource());
} else if (containerModels.iterator().hasNext()) {
List<HostResource> hosts = sortedContainerHostsFrom(containerModels.iterator().next(), nodesSpecification.minResources().nodes(), false);
if (hosts.isEmpty()) return; // No log server can be created (and none is needed)
- createLogserver(deployState.getDeployLogger(), admin, hosts);
+ createLogserver(deployState, admin, hosts);
} else {
context.getDeployLogger().logApplicationPackage(Level.INFO, "No container host available to use for running logserver");
}
@@ -110,9 +109,9 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
LogserverContainer container = new LogserverContainer(logServerCluster, deployState);
container.setHostResource(hostResource);
- container.initService(deployState.getDeployLogger());
+ container.initService(deployState);
logServerCluster.addContainer(container);
- admin.addAndInitializeService(deployState.getDeployLogger(), hostResource, container);
+ admin.addAndInitializeService(deployState, hostResource, container);
admin.setLogserverContainerCluster(logServerCluster);
context.getConfigModelRepoAdder().add(logserverClusterModel);
}
@@ -169,11 +168,11 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
return hosts.subList(0, Math.min(count, hosts.size()));
}
- private Logserver createLogserver(DeployLogger deployLogger, Admin admin, Collection<HostResource> hosts) {
+ private Logserver createLogserver(DeployState deployState, Admin admin, Collection<HostResource> hosts) {
Logserver logserver = new Logserver(admin);
logserver.setHostResource(hosts.iterator().next());
admin.setLogserver(logserver);
- logserver.initService(deployLogger);
+ logserver.initService(deployState);
return logserver;
}
@@ -185,7 +184,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
Slobrok slobrok = new Slobrok(admin, index++, deployState.featureFlags());
slobrok.setHostResource(host);
slobroks.add(slobrok);
- slobrok.initService(deployState.getDeployLogger());
+ slobrok.initService(deployState);
}
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 cb19df16fd8..0be3ac01f71 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
@@ -183,7 +183,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(deployState.getDeployLogger());
+ t.initService(deployState);
}
}
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 2e5126dcc44..4b1c03a170c 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
@@ -168,11 +168,11 @@ public abstract class Container extends AbstractService implements
public void addBuiltinHandlers() { }
@Override
- public void initService(DeployLogger deployLogger) {
+ public void initService(DeployState deployState) {
if (isInitialized()) return;
// XXX: Must be called first, to set the baseport
- super.initService(deployLogger);
+ super.initService(deployState);
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 b89c48931b2..8e856e5e962 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
@@ -814,7 +814,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
false,
!deployState.getProperties().isBootstrap());
var hosts = hostSystem.allocateHosts(clusterSpec, capacity, log);
- return createNodesFromHosts(log, hosts, cluster, context.getDeployState());
+ return createNodesFromHosts(hosts, cluster, context.getDeployState());
}
else {
return singleHostContainerCluster(cluster, hostSystem.getHost(Container.SINGLENODE_CONTAINER_SERVICESPEC), context);
@@ -824,7 +824,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
private List<ApplicationContainer> singleHostContainerCluster(ApplicationContainerCluster cluster, HostResource host, ConfigModelContext context) {
ApplicationContainer node = new ApplicationContainer(cluster, "container.0", 0, context.getDeployState());
node.setHostResource(host);
- node.initService(context.getDeployLogger());
+ node.initService(context.getDeployState());
return List.of(node);
}
@@ -835,7 +835,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
ClusterSpec.Id.from(cluster.getName()),
log,
hasZooKeeper(containerElement));
- return createNodesFromHosts(context.getDeployLogger(), hosts, cluster, context.getDeployState());
+ return createNodesFromHosts(hosts, cluster, context.getDeployState());
}
private List<ApplicationContainer> createNodesFromNodeType(ApplicationContainerCluster cluster, Element nodesElement, ConfigModelContext context) {
@@ -847,7 +847,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
Map<HostResource, ClusterMembership> hosts =
cluster.getRoot().hostSystem().allocateHosts(clusterSpec,
Capacity.fromRequiredNodeType(type), log);
- return createNodesFromHosts(context.getDeployLogger(), hosts, cluster, context.getDeployState());
+ return createNodesFromHosts(hosts, cluster, context.getDeployState());
}
private List<ApplicationContainer> createNodesFromContentServiceReference(ApplicationContainerCluster cluster, Element nodesElement, ConfigModelContext context) {
@@ -865,11 +865,10 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
referenceId,
cluster.getRoot().hostSystem(),
context.getDeployLogger());
- return createNodesFromHosts(context.getDeployLogger(), hosts, cluster, context.getDeployState());
+ return createNodesFromHosts(hosts, cluster, context.getDeployState());
}
- private List<ApplicationContainer> createNodesFromHosts(DeployLogger deployLogger,
- Map<HostResource, ClusterMembership> hosts,
+ private List<ApplicationContainer> createNodesFromHosts(Map<HostResource, ClusterMembership> hosts,
ApplicationContainerCluster cluster,
DeployState deployState) {
List<ApplicationContainer> nodes = new ArrayList<>();
@@ -877,7 +876,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
String id = "container." + entry.getValue().index();
ApplicationContainer container = new ApplicationContainer(cluster, id, entry.getValue().retired(), entry.getValue().index(), deployState);
container.setHostResource(entry.getKey());
- container.initService(deployLogger);
+ container.initService(deployState);
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 e69dd9abf47..dcf0be48f7b 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
@@ -312,7 +312,7 @@ public class Content extends ConfigModel {
index++;
docprocService.useDynamicPorts();
docprocService.setHostResource(host);
- docprocService.initService(modelContext.getDeployLogger());
+ docprocService.initService(modelContext.getDeployState());
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 6d21e0ad10e..22b752777e9 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
@@ -300,11 +300,11 @@ public class ContentSearchCluster extends AbstractConfigProducer<SearchCluster>
clusterName, node, flushOnShutdown, tuning, resourceLimits, parentGroup.isHosted(),
fractionOfMemoryReserved);
searchNode.setHostResource(node.getHostResource());
- searchNode.initService(deployState.getDeployLogger());
+ searchNode.initService(deployState);
tls = new TransactionLogServer(searchNode, clusterName, syncTransactionLog);
tls.setHostResource(searchNode.getHostResource());
- tls.initService(deployState.getDeployLogger());
+ tls.initService(deployState);
} else {
searchNode = new SearchNode.Builder(""+node.getDistributionKey(), spec, clusterName, node, flushOnShutdown,
tuning, resourceLimits, fractionOfMemoryReserved)
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 de50ba6ea21..88739e92567 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
@@ -280,15 +280,13 @@ public class StorageGroup {
/** The nodes explicitly specified as a nodes tag in this group, or empty if none */
private final Optional<NodesSpecification> nodeRequirement;
- private final DeployLogger deployLogger;
private GroupBuilder(StorageGroup storageGroup, List<GroupBuilder> subGroups, List<XmlNodeBuilder> nodeBuilders,
- Optional<NodesSpecification> nodeRequirement, DeployLogger deployLogger) {
+ Optional<NodesSpecification> nodeRequirement) {
this.storageGroup = storageGroup;
this.subGroups = subGroups;
this.nodeBuilders = nodeBuilders;
this.nodeRequirement = nodeRequirement;
- this.deployLogger = deployLogger;
}
/**
@@ -319,11 +317,11 @@ public class StorageGroup {
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);
+ searchNode.initService(deployState);
Distributor distributor = new Distributor(deployState.getProperties(), parent.getDistributorNodes(), distributionKey, null, provider);
distributor.setHostResource(searchNode.getHostResource());
- distributor.initService(deployLogger);
+ distributor.initService(deployState);
return searchNode;
}
@@ -339,7 +337,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.getStorageCluster().getClusterName(), owner.getRoot().hostSystem(), deployLogger) :
+ provisionHosts(nodeRequirement.get(), owner.getStorageCluster().getClusterName(), owner.getRoot().hostSystem(), deployState.getDeployLogger()) :
Collections.emptyMap();
Map<Optional<ClusterSpec.Group>, Map<HostResource, ClusterMembership>> hostGroups = collectAllocatedSubgroups(hostMapping);
@@ -450,7 +448,7 @@ public class StorageGroup {
else // Nodes or groups explicitly listed - resolve in GroupBuilder
nodeRequirement = Optional.empty();
- return new GroupBuilder(group, subGroups, explicitNodes, nodeRequirement, context.getDeployLogger());
+ return new GroupBuilder(group, subGroups, explicitNodes, nodeRequirement);
}
private Optional<String> childAsString(Optional<ModelElement> element, String childTagName) {
@@ -503,13 +501,13 @@ public class StorageGroup {
private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) {
StorageNode sNode = new StorageNode(deployState.getProperties(), parent.getStorageCluster(), null, clusterMembership.index(), clusterMembership.retired());
sNode.setHostResource(hostResource);
- sNode.initService(deployState.getDeployLogger());
+ sNode.initService(deployState);
// TODO: Supplying null as XML is not very nice
PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, parentGroup, null);
Distributor d = new Distributor(deployState.getProperties(), parent.getDistributorNodes(), clusterMembership.index(), null, provider);
d.setHostResource(sNode.getHostResource());
- d.initService(deployState.getDeployLogger());
+ d.initService(deployState);
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 4a88e02be45..eda70ffb2bc 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
@@ -367,7 +367,7 @@ public class ContentCluster extends AbstractConfigProducer<AbstractConfigProduce
boolean retired = host.spec().membership().map(ClusterMembership::retired).orElse(false);
var clusterControllerContainer = new ClusterControllerContainer(clusterControllers, ccIndex, runStandaloneZooKeeper, deployState, retired);
clusterControllerContainer.setHostResource(host);
- clusterControllerContainer.initService(deployState.getDeployLogger());
+ clusterControllerContainer.initService(deployState);
clusterControllerContainer.setProp("clustertype", "admin");
containers.add(clusterControllerContainer);
++index;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
index 28d1fbe72ef..6e3f3e1ebf5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java
@@ -123,7 +123,6 @@ public class SearchNode extends AbstractService implements
boolean flushOnShutdown, Optional<Tuning> tuning, Optional<ResourceLimits> resourceLimits, boolean isHostedVespa,
double fractionOfMemoryReserved) {
super(parent, name);
- setOmpNumThreads(1);
this.isHostedVespa = isHostedVespa;
this.fractionOfMemoryReserved = fractionOfMemoryReserved;
this.nodeSpec = nodeSpec;
@@ -239,10 +238,7 @@ public class SearchNode extends AbstractService implements
@Override
public String getStartupCommand() {
- if (getOmpNumThreads() != 1) {
- throw new IllegalStateException("ompNumThreads must be 1");
- }
- String startup = getEnvVariables() + "exec $ROOT/sbin/vespa-proton " + "--identity " + getConfigId();
+ String startup = getEnv() + " exec $ROOT/sbin/vespa-proton " + "--identity " + getConfigId();
if (serviceLayerService != null) {
startup = startup + " --serviceidentity " + serviceLayerService.getConfigId();
}