aboutsummaryrefslogtreecommitdiffstats
path: root/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
diff options
context:
space:
mode:
Diffstat (limited to 'zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
index 5ba16232221..5f7fa4a4e51 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
@@ -72,7 +72,7 @@ public class Curator implements AutoCloseable {
private Curator(ConfigserverConfig configserverConfig, String zooKeeperEnsembleConnectionSpec) {
this(configserverConfig.zookeeperLocalhostAffinity() ?
- HostName.getLocalhost() : zooKeeperEnsembleConnectionSpec,
+ createConnectionSpecForLocalhost(configserverConfig) : zooKeeperEnsembleConnectionSpec,
zooKeeperEnsembleConnectionSpec);
}
@@ -128,6 +128,20 @@ public class Curator implements AutoCloseable {
return connectionSpec.toString();
}
+ static String createConnectionSpecForLocalhost(ConfigserverConfig config) {
+ String thisServer = HostName.getLocalhost();
+
+ for (int i = 0; i < config.zookeeperserver().size(); i++) {
+ ConfigserverConfig.Zookeeperserver server = config.zookeeperserver(i);
+ if (thisServer.equals(server.hostname())) {
+ return String.format("%s:%d", server.hostname(), server.port());
+ }
+ }
+
+ throw new IllegalArgumentException("Unable to create connect string to localhost: " +
+ "There is no localhost servers specified in config: " + config);
+ }
+
private static void validateConnectionSpec(String connectionSpec) {
if (connectionSpec == null || connectionSpec.isEmpty())
throw new IllegalArgumentException(String.format("Connections spec '%s' is not valid", connectionSpec));