diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-01-09 16:56:51 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-01-09 16:56:51 +0100 |
commit | 63c151e0ebb65221dc318b4191db063e4da0cef4 (patch) | |
tree | d278278d44f5d5697a8baac9260f65d2c25a4e19 /zkfacade/src | |
parent | 011a262844a16db4524a1879cd9f893c78509ff1 (diff) |
Create zookeeper client config file only when necessary
Diffstat (limited to 'zkfacade/src')
-rw-r--r-- | zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java | 34 | ||||
-rw-r--r-- | zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java | 9 |
2 files changed, 22 insertions, 21 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 4b421102c2c..d6be27a0919 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -53,6 +53,8 @@ public class Curator implements AutoCloseable { private static final int BASE_SLEEP_TIME = 1000; //ms private static final int MAX_RETRIES = 10; + private static final File zkClientConfigFile = new File(Defaults.getDefaults().underVespaHome("conf/zookeeper/zookeeper-client.cfg")); + protected final RetryPolicy retryPolicy; private final CuratorFramework curatorFramework; @@ -63,10 +65,10 @@ public class Curator implements AutoCloseable { /** Creates a curator instance from a comma-separated string of ZooKeeper host:port strings */ public static Curator create(String connectionSpec) { - return Curator.create(connectionSpec, Optional.empty()); + return new Curator(connectionSpec, connectionSpec, Optional.of(zkClientConfigFile)); } - /** Creates a curator instance from a comma-separated string of ZooKeeper host:port strings */ + // For testing only, use Optional.empty for clientConfigFile parameter to create default zookeeper client config public static Curator create(String connectionSpec, Optional<File> clientConfigFile) { return new Curator(connectionSpec, connectionSpec, clientConfigFile); } @@ -75,7 +77,7 @@ public class Curator implements AutoCloseable { // TODO: Move zookeeperserver config out of configserverconfig (requires update of controller services.xml as well) @Inject public Curator(ConfigserverConfig configserverConfig, VespaZooKeeperServer server) { - this(configserverConfig, Optional.empty()); + this(configserverConfig, Optional.of(zkClientConfigFile)); } Curator(ConfigserverConfig configserverConfig, Optional<File> clientConfigFile) { @@ -127,19 +129,19 @@ public class Curator implements AutoCloseable { : createEnsembleConnectionSpec(configserverConfig); } - private static ZKClientConfig createClientConfig(Optional<File> file) { - boolean useSecureClient = Boolean.parseBoolean(getEnvironmentVariable("VESPA_USE_TLS_FOR_ZOOKEEPER_CLIENT").orElse("false")); - String config = "zookeeper.client.secure=" + useSecureClient + "\n"; - - File clientConfigFile = - file.orElseGet(() -> new File(Defaults.getDefaults().underVespaHome("conf/zookeeper/zookeeper-client.cfg"))); - clientConfigFile.getParentFile().mkdirs(); - IOUtils.writeFile(clientConfigFile, Utf8.toBytes(config)); - - try { - return new ZKClientConfig(clientConfigFile); - } catch (QuorumPeerConfig.ConfigException e) { - throw new RuntimeException("Unable to create ZooKeeper client config file " + file); + private static ZKClientConfig createClientConfig(Optional<File> clientConfigFile) { + if (clientConfigFile.isPresent()) { + boolean useSecureClient = Boolean.parseBoolean(getEnvironmentVariable("VESPA_USE_TLS_FOR_ZOOKEEPER_CLIENT").orElse("false")); + String config = "zookeeper.client.secure=" + useSecureClient + "\n"; + clientConfigFile.get().getParentFile().mkdirs(); + IOUtils.writeFile(clientConfigFile.get(), Utf8.toBytes(config)); + try { + return new ZKClientConfig(clientConfigFile.get()); + } catch (QuorumPeerConfig.ConfigException e) { + throw new RuntimeException("Unable to create ZooKeeper client config file " + clientConfigFile.get()); + } + } else { + return new ZKClientConfig(); } } diff --git a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java index 4cd2c708d1a..d428540f8c1 100644 --- a/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java +++ b/zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java @@ -9,7 +9,6 @@ import org.junit.Before; import org.junit.Test; import java.io.IOException; -import java.nio.file.Files; import java.util.Optional; import static org.hamcrest.core.Is.is; @@ -54,7 +53,7 @@ public class CuratorTest { } @Test - public void require_curator_is_created_from_config() throws IOException { + public void require_curator_is_created_from_config() { try (Curator curator = createCurator(createTestConfig())) { assertThat(curator.zooKeeperEnsembleConnectionSpec(), is(spec1 + "," + spec2)); assertThat(curator.zooKeeperEnsembleCount(), is(2)); @@ -62,7 +61,7 @@ public class CuratorTest { } @Test - public void require_that_server_count_is_correct() throws IOException { + public void require_that_server_count_is_correct() { ConfigserverConfig.Builder builder = new ConfigserverConfig.Builder(); builder.zookeeperserver(createZKBuilder(localhost, port1)); try (Curator curator = createCurator(new ConfigserverConfig(builder))) { @@ -100,8 +99,8 @@ public class CuratorTest { return zkBuilder; } - private Curator createCurator(ConfigserverConfig configserverConfig) throws IOException { - return new Curator(configserverConfig, Optional.of(Files.createTempFile("zookeeper-client", "cfg").toFile())); + private Curator createCurator(ConfigserverConfig configserverConfig) { + return new Curator(configserverConfig, Optional.empty()); } private static class PortAllocator { |