summaryrefslogtreecommitdiffstats
path: root/defaults
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-07-18 11:29:01 +0200
committerArne Juul <arnej@yahoo-inc.com>2018-07-18 12:11:44 +0200
commit12991a2dd834eeacd455efb8602c47f14db71bca (patch)
treeb186e804b5a39a6510b5a83dc9af0e83a9d45f5f /defaults
parent205f33ed11edfbc1021f05c0f54fdafa687af154 (diff)
bring C++ and Java APIs into sync
* detect and make accessible port numbers to use for config server / config proxy from Java also. * port numbers are relative to VESPA_PORT_BASE if not explicitly specified. * try to make the logic in C++ and Java more similar.
Diffstat (limited to 'defaults')
-rw-r--r--defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java52
-rw-r--r--defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java10
-rw-r--r--defaults/src/vespa/defaults.cpp13
3 files changed, 56 insertions, 19 deletions
diff --git a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
index af92a183443..4ab6622cbdb 100644
--- a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
+++ b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
@@ -27,15 +27,20 @@ public class Defaults {
private final String vespaHost;
private final int vespaWebServicePort;
private final int vespaPortBase;
+ private final int vespaPortConfigServerRpc;
+ private final int vespaPortConfigServerHttp;
+ private final int vespaPortConfigProxyRpc;
private Defaults() {
vespaHome = findVespaHome();
vespaUser = findVespaUser();
vespaHost = findVespaHostname();
- vespaWebServicePort = findVespaWebServicePort();
- vespaPortBase = 19000; // TODO
+ vespaWebServicePort = findWebServicePort(8080);
+ vespaPortBase = findVespaPortBase(19000);
+ vespaPortConfigServerRpc = findConfigServerPort(vespaPortBase + 70);
+ vespaPortConfigServerHttp = vespaPortConfigServerRpc + 1;
+ vespaPortConfigProxyRpc = findConfigProxyPort(vespaPortBase + 91);
}
-
static private String findVespaHome() {
Optional<String> vespaHomeEnv = Optional.ofNullable(System.getenv("VESPA_HOME"));
if ( ! vespaHomeEnv.isPresent() || vespaHomeEnv.get().trim().isEmpty()) {
@@ -67,21 +72,33 @@ public class Defaults {
return vespaUserEnv.get().trim();
}
- static private int findVespaWebServicePort() {
- Optional<String> vespaWebServicePortString = Optional.ofNullable(System.getenv("VESPA_WEB_SERVICE_PORT"));
- if ( ! vespaWebServicePortString.isPresent() || vespaWebServicePortString.get().trim().isEmpty()) {
- log.info("VESPA_WEB_SERVICE_PORT not set, using 8080");
- return 8080;
+ static private int findPort(String varName, int defaultPort) {
+ Optional<String> port = Optional.ofNullable(System.getenv(varName));
+ if ( ! port.isPresent() || port.get().trim().isEmpty()) {
+ log.fine("" + varName + " not set, using " + defaultPort);
+ return defaultPort;
}
try {
- return Integer.parseInt(vespaWebServicePortString.get());
- }
- catch (NumberFormatException e) {
- throw new IllegalArgumentException("VESPA_WEB_SERVICE_PORT must be an integer, was '" +
- vespaWebServicePortString.get() + "'");
+ return Integer.parseInt(port.get());
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("must be an integer, was '" +
+ port.get() + "'");
}
}
+ static private int findVespaPortBase(int defaultPort) {
+ return findPort("VESPA_PORT_BASE", defaultPort);
+ }
+ static private int findConfigServerPort(int defaultPort) {
+ return findPort("port_configserver_rpc", defaultPort);
+ }
+ static private int findConfigProxyPort(int defaultPort) {
+ return findPort("port_configproxy_rpc", defaultPort);
+ }
+ static private int findWebServicePort(int defaultPort) {
+ return findPort("VESPA_WEB_SERVICE_PORT", defaultPort);
+ }
+
/**
* Get the username to own directories, files and processes
* @return the vespa user name
@@ -135,6 +152,15 @@ public class Defaults {
*/
public int vespaPortBase() { return vespaPortBase; }
+ /** @return port number used by cloud config server (for its RPC protocol) */
+ public int vespaConfigServerRpcPort() { return vespaPortConfigServerRpc; }
+
+ /** @return port number used by cloud config server (REST api on HTTP) */
+ public int vespaConfigServerHttpPort() { return vespaPortConfigServerHttp; }
+
+ /** @return port number used by config proxy server (RPC protocol) */
+ public int vespaConfigProxyRpcPort() { return vespaPortConfigProxyRpc; }
+
/** Returns the defaults of this runtime environment */
public static Defaults getDefaults() { return defaults; }
diff --git a/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java b/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
index 75da8e1146f..c9b7326758d 100644
--- a/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
+++ b/defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java
@@ -22,4 +22,14 @@ public class DefaultsTestCase {
assertEquals("vespa", Defaults.getDefaults().vespaUser());
}
+ @Test
+ public void testPortsArePositive() {
+ Defaults d = Defaults.getDefaults();
+ assertEquals(true, d.vespaPortBase() > 0);
+ assertEquals(true, d.vespaWebServicePort() > 0);
+ assertEquals(true, d.vespaConfigServerRpcPort() > 0);
+ assertEquals(true, d.vespaConfigServerHttpPort() > 0);
+ assertEquals(true, d.vespaConfigProxyRpcPort() > 0);
+ }
+
}
diff --git a/defaults/src/vespa/defaults.cpp b/defaults/src/vespa/defaults.cpp
index dcb5e38584d..1280f6bdca2 100644
--- a/defaults/src/vespa/defaults.cpp
+++ b/defaults/src/vespa/defaults.cpp
@@ -20,9 +20,9 @@ const char *defaultUser = "vespa";
const char *defaultHost = "localhost";
int defaultWebServicePort = 8080;
int defaultPortBase = 19000;
-int defaultPortConfigServerRpc = 19070;
-int defaultPortConfigServerHttp = 19071;
-int defaultPortConfigProxyRpc = 19090;
+int defaultPortConfigServerRpc = 0;
+int defaultPortConfigServerHttp = 0;
+int defaultPortConfigProxyRpc = 0;
const char *defaultConfigServers = "localhost";
std::atomic<bool> initialized(false);
@@ -80,16 +80,16 @@ void findDefaults() {
// fprintf(stderr, "debug\tdefault port base is '%ld'\n", p);
defaultPortBase = p;
}
+ defaultPortConfigServerRpc = defaultPortBase + 70;
+ defaultPortConfigProxyRpc = defaultPortBase + 90;
p = getNumFromEnv("port_configserver_rpc");
if (p > 0) {
defaultPortConfigServerRpc = p;
- defaultPortConfigServerHttp = p+1;
}
+ defaultPortConfigServerHttp = defaultPortConfigServerRpc + 1;
p = getNumFromEnv("port_configproxy_rpc");
if (p > 0) {
defaultPortConfigProxyRpc = p;
- } else {
- defaultPortConfigProxyRpc = defaultPortBase + 90;
}
env = getenv("VESPA_CONFIGSERVERS");
if (env == NULL || *env == '\0') {
@@ -241,6 +241,7 @@ Defaults::vespaConfigServerHosts()
int
Defaults::vespaConfigServerRpcPort()
{
+ findDefaults();
return defaultPortConfigServerRpc;
}