From c279dfb3623d11d5fae34d53a28312919356633a Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Sat, 30 May 2020 09:30:51 +0200 Subject: Resolve path under vespa home if not absolute --- .../vespa/zookeeper/VespaZooKeeperServerImpl.java | 2 +- .../com/yahoo/vespa/zookeeper/Configurator.java | 45 +++++++++++++--------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/zookeeper-server/zookeeper-server-3.5.8/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server-3.5.8/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java index 15d5d2f6f31..7f5b6170947 100644 --- a/zookeeper-server/zookeeper-server-3.5.8/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java +++ b/zookeeper-server/zookeeper-server-3.5.8/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java @@ -28,7 +28,7 @@ public class VespaZooKeeperServerImpl extends AbstractComponent implements Runna this.zookeeperServerConfig = zookeeperServerConfig; new Configurator(zookeeperServerConfig).writeConfigToDisk(TransportSecurityUtils.getOptions()); zkServerThread = new Thread(this, "zookeeper server"); - zkServerThread.start(); + zkServerThread.start(); } private void shutdown() { diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java index 119509dd9cc..44ea8cece34 100644 --- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java +++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java @@ -12,9 +12,9 @@ import com.yahoo.security.X509CertificateUtils; import com.yahoo.security.tls.TlsContext; import com.yahoo.security.tls.TransportSecurityOptions; import com.yahoo.text.Utf8; +import com.yahoo.vespa.defaults.Defaults; import javax.net.ssl.SSLContext; -import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; @@ -26,29 +26,33 @@ import java.util.List; import java.util.Optional; import java.util.Set; import java.util.TreeSet; +import java.util.logging.Level; import java.util.stream.Collectors; import static com.yahoo.vespa.defaults.Defaults.getDefaults; public class Configurator { + + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Configurator.class.getName()); private static final String ZOOKEEPER_JMX_LOG4J_DISABLE = "zookeeper.jmx.log4j.disable"; static final String ZOOKEEPER_JUTE_MAX_BUFFER = "jute.maxbuffer"; private final ZookeeperServerConfig zookeeperServerConfig; - private final String configFilePath; - private final String jksKeyStoreFilePath; + private final Path configFilePath; + private final Path jksKeyStoreFilePath; public Configurator(ZookeeperServerConfig zookeeperServerConfig) { + log.log(Level.FINE, zookeeperServerConfig.toString()); this.zookeeperServerConfig = zookeeperServerConfig; - this.configFilePath = zookeeperServerConfig.zooKeeperConfigFile(); - this.jksKeyStoreFilePath = zookeeperServerConfig.jksKeyStoreFile(); + this.configFilePath = makeAbsolutePath(zookeeperServerConfig.zooKeeperConfigFile()); + this.jksKeyStoreFilePath = makeAbsolutePath(zookeeperServerConfig.jksKeyStoreFile()); System.setProperty(ZOOKEEPER_JMX_LOG4J_DISABLE, "true"); System.setProperty("zookeeper.snapshot.trust.empty", Boolean.valueOf(zookeeperServerConfig.trustEmptySnapshot()).toString()); System.setProperty(ZOOKEEPER_JUTE_MAX_BUFFER, Integer.valueOf(zookeeperServerConfig.juteMaxBuffer()).toString()); } void writeConfigToDisk(Optional transportSecurityOptions) { - new File(configFilePath).getParentFile().mkdirs(); + configFilePath.toFile().getParentFile().mkdirs(); try { writeZooKeeperConfigFile(zookeeperServerConfig, transportSecurityOptions); @@ -61,7 +65,7 @@ public class Configurator { private void writeZooKeeperConfigFile(ZookeeperServerConfig config, Optional transportSecurityOptions) throws IOException { - try (FileWriter writer = new FileWriter(configFilePath)) { + try (FileWriter writer = new FileWriter(configFilePath.toFile())) { writer.write(transformConfigToString(config, transportSecurityOptions)); } } @@ -118,7 +122,7 @@ public class Configurator { .withType(KeyStoreType.JKS) .withKeyEntry("foo", privateKey, certificates); - KeyStoreUtils.writeKeyStoreToFile(keyStoreBuilder.build(), Paths.get(jksKeyStoreFilePath)); + KeyStoreUtils.writeKeyStoreToFile(keyStoreBuilder.build(), jksKeyStoreFilePath); } private void ensureThisServerIsRepresented(int myid, List servers) { @@ -138,13 +142,18 @@ public class Configurator { sb.append("server.").append(server.id()).append("=").append(server.hostname()).append(":").append(server.quorumPort()).append(":").append(server.electionPort()).append("\n"); } - - - static Set zookeeperServerHostnames(ZookeeperServerConfig zookeeperServerConfig) { return zookeeperServerConfig.server().stream().map(ZookeeperServerConfig.Server::hostname).collect(Collectors.toSet()); } + Path makeAbsolutePath(String filename) { + Path path = Paths.get(filename); + if (path.isAbsolute()) + return path; + else + return Paths.get(Defaults.getDefaults().underVespaHome(filename)); + } + private interface TlsConfig { default Set allowedCiphers(SSLContext sslContext) { return new TreeSet<>(TlsContext.getAllowedCipherSuites(sslContext)); } @@ -162,7 +171,7 @@ public class Configurator { String configFieldPrefix(); - String jksKeyStoreFilePath(); + Path jksKeyStoreFilePath(); SSLContext sslContext(); @@ -195,9 +204,9 @@ public class Configurator { static class TlsClientServerConfig implements TlsConfig { private final SSLContext sslContext; - private final String jksKeyStoreFilePath; + private final Path jksKeyStoreFilePath; - TlsClientServerConfig(SSLContext sslContext, String jksKeyStoreFilePath) { + TlsClientServerConfig(SSLContext sslContext, Path jksKeyStoreFilePath) { this.sslContext = sslContext; this.jksKeyStoreFilePath = jksKeyStoreFilePath; } @@ -233,7 +242,7 @@ public class Configurator { } @Override - public String jksKeyStoreFilePath() { + public Path jksKeyStoreFilePath() { return jksKeyStoreFilePath; } @@ -246,9 +255,9 @@ public class Configurator { static class TlsQuorumConfig implements TlsConfig { private final SSLContext sslContext; - private final String jksKeyStoreFilePath; + private final Path jksKeyStoreFilePath; - TlsQuorumConfig(SSLContext sslContext, String jksKeyStoreFilePath) { + TlsQuorumConfig(SSLContext sslContext, Path jksKeyStoreFilePath) { this.sslContext = sslContext; this.jksKeyStoreFilePath = jksKeyStoreFilePath; } @@ -293,7 +302,7 @@ public class Configurator { } @Override - public String jksKeyStoreFilePath() { + public Path jksKeyStoreFilePath() { return jksKeyStoreFilePath; } -- cgit v1.2.3