diff options
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.java | 16 |
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)); |