summaryrefslogtreecommitdiffstats
path: root/zkfacade
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-01-09 16:56:51 +0100
committerHarald Musum <musum@verizonmedia.com>2020-01-09 16:56:51 +0100
commit63c151e0ebb65221dc318b4191db063e4da0cef4 (patch)
treed278278d44f5d5697a8baac9260f65d2c25a4e19 /zkfacade
parent011a262844a16db4524a1879cd9f893c78509ff1 (diff)
Create zookeeper client config file only when necessary
Diffstat (limited to 'zkfacade')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java34
-rw-r--r--zkfacade/src/test/java/com/yahoo/vespa/curator/CuratorTest.java9
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 {