aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon.hallingstad@gmail.com>2023-01-30 12:24:25 +0100
committerGitHub <noreply@github.com>2023-01-30 12:24:25 +0100
commitcdb4e386f32212ce4c7bcdadc4318c2b82384e62 (patch)
tree2e002718c30728e40ce062cc66fb4bf51cffd73b
parente01512af63118a1ae19d49a1350a3ed544a7a4c0 (diff)
parenta9559e62fd7316bb75d39ed1891a93f68554ebf6 (diff)
Merge pull request #25794 from vespa-engine/revert-25790-hmusum/create-dummy-node-when-starting-zookeeper-server
Revert "Create dummy node after starting ZooKeeper server"
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java10
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java4
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java48
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java4
4 files changed, 16 insertions, 50 deletions
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
index eb84b13d4d6..0a25d432766 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
@@ -1,11 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
+import com.yahoo.component.annotation.Inject;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.component.AbstractComponent;
-import com.yahoo.component.annotation.Inject;
+import com.yahoo.net.HostName;
import com.yahoo.protect.Process;
import com.yahoo.yolean.Exceptions;
+
import java.time.Duration;
import java.time.Instant;
import java.util.List;
@@ -90,7 +92,7 @@ public class Reconfigurer extends AbstractComponent {
log.log(Level.INFO, "Will reconfigure ZooKeeper cluster." +
"\nServers in active config:" + servers(activeConfig) +
"\nServers in new config:" + servers(newConfig));
- String connectionSpec = vespaZooKeeperAdmin.localConnectionSpec(activeConfig);
+ String connectionSpec = localConnectionSpec(activeConfig);
Instant now = Instant.now();
Duration reconfigTimeout = reconfigTimeout();
Instant end = now.plus(reconfigTimeout);
@@ -134,6 +136,10 @@ public class Reconfigurer extends AbstractComponent {
return TIMEOUT;
}
+ private static String localConnectionSpec(ZookeeperServerConfig config) {
+ return HostName.getLocalhost() + ":" + config.clientPort();
+ }
+
private static List<String> servers(ZookeeperServerConfig config) {
return config.server().stream()
.filter(server -> ! server.retired())
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
index a9096125cba..59c9628bcab 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdmin.java
@@ -1,8 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
-import com.yahoo.cloud.config.ZookeeperServerConfig;
-import com.yahoo.net.HostName;
import java.time.Duration;
/**
@@ -17,6 +15,4 @@ public interface VespaZooKeeperAdmin {
/* Timeout for connecting to ZooKeeper */
default Duration sessionTimeout() { return Duration.ofSeconds(30); }
- default String localConnectionSpec(ZookeeperServerConfig config) { return HostName.getLocalhost() + ":" + config.clientPort(); }
-
}
diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
index c6d1a4f310f..ae7bf8d84f5 100644
--- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
+++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperAdminImpl.java
@@ -1,23 +1,19 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.zookeeper;
-import com.yahoo.cloud.config.ZookeeperServerConfig;
-import com.yahoo.net.HostName;
import com.yahoo.vespa.zookeeper.client.ZkClientConfigBuilder;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.admin.ZooKeeperAdmin;
import org.apache.zookeeper.data.ACL;
+
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import java.time.Duration;
-import java.time.Instant;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
-import static com.yahoo.yolean.Exceptions.uncheck;
-
/**
* @author hmusum
*/
@@ -47,46 +43,14 @@ public class VespaZooKeeperAdminImpl implements VespaZooKeeperAdmin {
| KeeperException.NewConfigNoQuorum e) {
throw new ReconfigException(e);
}
- catch (KeeperException | InterruptedException e) {
+ catch (KeeperException | IOException | InterruptedException e) {
throw new RuntimeException(e);
}
}
- private ZooKeeperAdmin createAdmin(String connectionSpec) {
- return uncheck(() -> new ZooKeeperAdmin(connectionSpec, (int) sessionTimeout().toMillis(),
- (event) -> log.log(Level.INFO, event.toString()), new ZkClientConfigBuilder().toConfig()));
- }
-
- /** Creates a node in zookeeper, with hostname as part of node name, this ensures that server is up and working before returning */
- void createDummyNode(ZookeeperServerConfig zookeeperServerConfig) {
- int sleepTime = 2_000;
- try (ZooKeeperAdmin zooKeeperAdmin = createAdmin(localConnectionSpec(zookeeperServerConfig))) {
- Instant end = Instant.now().plus(Duration.ofMinutes(5));
- Exception exception = null;
- do {
- try {
- zooKeeperAdmin.create("/dummy-node-" + HostName.getLocalhost(), new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
- return;
- } catch (KeeperException e) {
- if (e instanceof KeeperException.NodeExistsException) {
- try {
- zooKeeperAdmin.setData("/dummy-node-" + HostName.getLocalhost(), new byte[0], 0);
- return;
- } catch (KeeperException ex) {
- log.log(Level.INFO, e.getMessage());
- Thread.sleep(sleepTime);
- continue;
- }
- }
- log.log(Level.INFO, e.getMessage());
- exception = e;
- Thread.sleep(sleepTime);
- }
- } while (Instant.now().isBefore(end));
- throw new RuntimeException("Unable to create dummy node: ", exception);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
+ private ZooKeeperAdmin createAdmin(String connectionSpec) throws IOException {
+ return new ZooKeeperAdmin(connectionSpec, (int) sessionTimeout().toMillis(),
+ (event) -> log.log(Level.INFO, event.toString()), new ZkClientConfigBuilder().toConfig());
}
}
diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
index 8adabeedb1b..e5bfa60f47e 100644
--- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
+++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java
@@ -2,9 +2,10 @@
package com.yahoo.vespa.zookeeper;
import ai.vespa.validation.Validation;
+import com.yahoo.component.annotation.Inject;
import com.yahoo.cloud.config.ZookeeperServerConfig;
import com.yahoo.component.AbstractComponent;
-import com.yahoo.component.annotation.Inject;
+
import java.nio.file.Path;
import java.time.Duration;
@@ -24,7 +25,6 @@ public class VespaZooKeeperServerImpl extends AbstractComponent implements Vespa
"dynamicReconfiguration must be false");
this.peer = new VespaQuorumPeer();
this.runner = new ZooKeeperRunner(zookeeperServerConfig, this);
- new VespaZooKeeperAdminImpl().createDummyNode(zookeeperServerConfig);
}
@Override