diff options
-rw-r--r-- | defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java | 52 | ||||
-rw-r--r-- | defaults/src/test/java/com/yahoo/vespa/defaults/DefaultsTestCase.java | 10 | ||||
-rw-r--r-- | defaults/src/vespa/defaults.cpp | 13 |
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; } |