summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-07-17 09:47:02 +0200
committerHarald Musum <musum@oath.com>2018-07-17 09:47:02 +0200
commitdd5359df956a5214efe05aa62988e1dd982bab53 (patch)
treee9455ae392a9d269cc2c739cdd052b83b2b4edfd /config-model
parent980885223d1953260f0f2ea6f608fa5b77413d0f (diff)
Use config server spec for config server rpc port
Use config server spec instead of calling external program
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java29
-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.java22
3 files changed, 23 insertions, 32 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
index e8f1f59310b..2a32549b6bf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Configserver.java
@@ -1,16 +1,8 @@
// 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.admin;
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import java.util.logging.Logger;
-
import com.yahoo.config.model.api.ConfigServerSpec;
-import com.yahoo.log.LogLevel;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import static com.yahoo.vespa.defaults.Defaults.getDefaults;
import com.yahoo.vespa.model.AbstractService;
/**
@@ -26,11 +18,13 @@ import com.yahoo.vespa.model.AbstractService;
*/
public class Configserver extends AbstractService {
private static final long serialVersionUID = 1L;
- private static final int defaultPort = 19070;
- private static final Logger log = Logger.getLogger(Configserver.class.getName());
+ public static final int defaultRpcPort = 19070;
- public Configserver(AbstractConfigProducer parent, String name) {
+ private final int rpcPort;
+
+ public Configserver(AbstractConfigProducer parent, String name, int rpcPort) {
super(parent, name);
+ this.rpcPort = rpcPort;
portsMeta.on(0).tag("rpc").tag("config");
portsMeta.on(1).tag("http").tag("config").tag("state");
setProp("clustertype", "admin");
@@ -41,16 +35,7 @@ public class Configserver extends AbstractService {
* Returns the desired base port for this service.
*/
public int getWantedPort() {
- try {
- // TODO: Provide configserver port as argument when creating this service instead
- Process process = new ProcessBuilder(getDefaults().underVespaHome("bin/vespa-print-default"), "configserver_rpc_port").start();
- InputStream in = process.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- return Integer.parseInt(reader.readLine().trim());
- } catch (Exception exception) {
- log.log(LogLevel.DEBUG, "Error reading port from script, using " + defaultPort);
- return defaultPort;
- }
+ return rpcPort;
}
/**
@@ -84,7 +69,7 @@ public class Configserver extends AbstractService {
return getRelativePort(1);
}
- public ConfigServerSpec getConfigServerSpec() {
+ ConfigServerSpec getConfigServerSpec() {
return new Spec(getHostName(), getConfigServerRpcPort(), getConfigServerHttpPort(), ZooKeepersConfigProvider.zkPort);
}
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 96e120cae92..297c4a6e9b9 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
@@ -34,7 +34,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
private static final String DEFAULT_CLUSTER_NAME = "vespa";
private final ApplicationType applicationType;
- private final List<ConfigServerSpec> configServerSpecs;
+ protected final List<ConfigServerSpec> configServerSpecs;
private final FileRegistry fileRegistry;
protected final boolean multitenant;
@@ -52,7 +52,7 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
HostSystem hostSystem = parent.getHostSystem();
HostResource host = new HostResource(Host.createConfigServerHost(hostSystem, spec.getHostName()));
hostSystem.addBoundHost(host);
- Configserver configserver = new Configserver(parent, spec.getHostName());
+ Configserver configserver = new Configserver(parent, spec.getHostName(), spec.getConfigServerPort());
configserver.setHostResource(host);
configserver.setBasePort(configserver.getWantedPort());
configserver.initService();
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 da8c73c0958..2313a2ffcd8 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
@@ -23,6 +23,7 @@ import org.w3c.dom.Element;
import java.util.List;
import java.util.ArrayList;
+import java.util.Objects;
import java.util.logging.Level;
/**
@@ -102,7 +103,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
return cluster;
}
- // Extra stupid because configservers tag is voluntary
+ // Extra stupid because configservers tag is optional
private List<Configserver> getConfigServers(AbstractConfigProducer parent, Element adminE) {
SimpleConfigProducer configServers = new SimpleConfigProducer(parent, "configservers");
List<Configserver> cfgs = new ArrayList<>();
@@ -114,7 +115,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
} else {
parent.deployLogger().log(LogLevel.INFO, "Specifying configserver without parent element configservers in services.xml is deprecated");
}
- Configserver cfgs0 = new ConfigserverBuilder(0).build(configServers, configserverE);
+ Configserver cfgs0 = new ConfigserverBuilder(0, configServerSpecs).build(configServers, configserverE);
cfgs0.setProp("index", 0);
cfgs.add(cfgs0);
return cfgs;
@@ -122,7 +123,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
// configservers tag in use
int i = 0;
for (Element configserverE : XML.getChildren(configserversE, "configserver")) {
- Configserver cfgsrv = new ConfigserverBuilder(i).build(configServers, configserverE);
+ Configserver cfgsrv = new ConfigserverBuilder(i, configServerSpecs).build(configServers, configserverE);
cfgsrv.setProp("index", i);
cfgs.add(cfgsrv);
i++;
@@ -161,16 +162,21 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
}
private static class ConfigserverBuilder extends DomConfigProducerBuilder<Configserver> {
- int i;
+ private final int i;
+ private final int rpcPort;
- public ConfigserverBuilder(int i) {
+ public ConfigserverBuilder(int i, List<ConfigServerSpec> configServerSpec) {
this.i = i;
+ Objects.requireNonNull(configServerSpec);
+ if (configServerSpec.size() > 1)
+ this.rpcPort = configServerSpec.get(0).getConfigServerPort();
+ else
+ this.rpcPort = Configserver.defaultRpcPort;
}
@Override
- protected Configserver doBuild(AbstractConfigProducer parent,
- Element spec) {
- return new Configserver(parent, "configserver." + i);
+ protected Configserver doBuild(AbstractConfigProducer parent, Element spec) {
+ return new Configserver(parent, "configserver." + i, rpcPort);
}
}