From a3dedf0219daab34ac097f1a04c6e6ce578f6405 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Mon, 7 Dec 2020 13:46:03 +0100 Subject: Connect to localhost when reconfiguring --- .../src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java | 9 ++++----- .../test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java | 11 ++++++++--- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'zookeeper-server/zookeeper-server-3.5.6') diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java index fe8a8d067f8..9dc071ff4d9 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.zookeeper; import com.google.inject.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; +import com.yahoo.net.HostName; import com.yahoo.yolean.Exceptions; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; @@ -108,7 +109,7 @@ public class Reconfigurer extends AbstractComponent { log.log(Level.INFO, "Will reconfigure ZooKeeper cluster in " + reconfigWaitPeriod() + ". Joining servers: " + joiningServers + ", leaving servers: " + leavingServers); sleeper.accept(reconfigWaitPeriod()); - String connectionSpec = connectionSpec(activeConfig); + String connectionSpec = localConnectionSpec(activeConfig); Instant end = Instant.now().plus(reconfigTimeout); // Loop reconfiguring since we might need to wait until another reconfiguration is finished before we can succeed for (int attempts = 1; Instant.now().isBefore(end); attempts++) { @@ -144,10 +145,8 @@ public class Reconfigurer extends AbstractComponent { e instanceof KeeperException.NewConfigNoQuorum; } - private static String connectionSpec(ZookeeperServerConfig config) { - return config.server().stream() - .map(server -> server.hostname() + ":" + config.clientPort()) - .collect(Collectors.joining(",")); + private static String localConnectionSpec(ZookeeperServerConfig config) { + return HostName.getLocalhost() + ":" + config.clientPort(); } private static List serverIds(ZookeeperServerConfig config) { diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java index bf1f9ca5611..ee30a17f0cc 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.zookeeper; import com.yahoo.cloud.config.ZookeeperServerConfig; +import com.yahoo.net.HostName; import org.apache.zookeeper.KeeperException; import org.junit.After; import org.junit.Before; @@ -47,7 +48,7 @@ public class ReconfigurerTest { // Cluster grows ZookeeperServerConfig nextConfig = createConfig(5, true); reconfigurer.startOrReconfigure(nextConfig); - assertEquals("node0:2181,node1:2181,node2:2181", reconfigurer.connectionSpec); + assertEquals("node1:2181", reconfigurer.connectionSpec); assertEquals("3=node3:2182:2183;2181,4=node4:2182:2183;2181", reconfigurer.joiningServers); assertNull("No servers are leaving", reconfigurer.leavingServers); assertEquals(1, reconfigurer.reconfigurations); @@ -62,7 +63,7 @@ public class ReconfigurerTest { nextConfig = createConfig(3, true); reconfigurer.startOrReconfigure(nextConfig); assertEquals(2, reconfigurer.reconfigurations); - assertEquals("node0:2181,node1:2181,node2:2181,node3:2181,node4:2181", reconfigurer.connectionSpec); + assertEquals("node1:2181", reconfigurer.connectionSpec); assertNull("No servers are joining", reconfigurer.joiningServers); assertEquals("3,4", reconfigurer.leavingServers); assertSame(nextConfig, reconfigurer.activeConfig()); @@ -77,7 +78,7 @@ public class ReconfigurerTest { ZookeeperServerConfig nextConfig = createConfig(5, true); reconfigurer.startOrReconfigure(nextConfig); - assertEquals("node0:2181,node1:2181,node2:2181", reconfigurer.connectionSpec); + assertEquals("node1:2181", reconfigurer.connectionSpec); assertEquals("3=node3:2182:2183;2181,4=node4:2182:2183;2181", reconfigurer.joiningServers); assertNull("No servers are leaving", reconfigurer.leavingServers); assertEquals(1, reconfigurer.reconfigurations); @@ -126,6 +127,10 @@ public class ReconfigurerTest { private String joiningServers; private String leavingServers; + public TestableReconfigurer() { + HostName.setHostNameForTestingOnly("node1"); + } + @Override void startOrReconfigure(ZookeeperServerConfig newConfig) { super.startOrReconfigure(newConfig, l->{}); -- cgit v1.2.3