aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-02-07 14:36:08 +0100
committerHarald Musum <musum@yahooinc.com>2023-02-07 14:36:08 +0100
commit6fdaaf7318bcc75c179adaf1c1800d2e4b7d78eb (patch)
tree2082fdd81b45ba3fd839ee2aae214bd9bd4063cf
parent18a5576a8e1b295f9bdbec55270ebdcb7e0ca05e (diff)
No need to wait until connected in cluster controller
VespaZooKeeperSever now guarantees that server is working by writing a node, so no need to do an extra check in cluster controller
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java20
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java4
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java2
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java3
4 files changed, 9 insertions, 20 deletions
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
index 1ac870c45de..50859b837b1 100644
--- a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java
@@ -1,8 +1,8 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
-import com.yahoo.component.annotation.Inject;
import com.yahoo.component.AbstractComponent;
+import com.yahoo.component.annotation.Inject;
import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.clustercontroller.apputil.communication.http.JDiscMetricWrapper;
import com.yahoo.vespa.clustercontroller.core.FleetController;
@@ -10,13 +10,10 @@ import com.yahoo.vespa.clustercontroller.core.FleetControllerOptions;
import com.yahoo.vespa.clustercontroller.core.RemoteClusterControllerTaskScheduler;
import com.yahoo.vespa.clustercontroller.core.restapiv2.ClusterControllerStateRestAPI;
import com.yahoo.vespa.clustercontroller.core.status.StatusHandler;
-import com.yahoo.vespa.curator.Curator;
import com.yahoo.vespa.zookeeper.VespaZooKeeperServer;
-
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Logger;
@@ -49,7 +46,6 @@ public class ClusterController extends AbstractComponent
public void setOptions(FleetControllerOptions options, Metric metricImpl) throws Exception {
referents.incrementAndGet();
metricWrapper.updateMetricImplementation(metricImpl);
- verifyThatZooKeeperWorks(options);
synchronized (controllers) {
FleetController controller = controllers.get(options.clusterName());
if (controller == null) {
@@ -99,8 +95,6 @@ public class ClusterController extends AbstractComponent
}
}
- FleetController getController(String name) { return controllers.get(name); }
-
@Override
public StatusHandler.ContainerStatusPageServer get(String cluster) {
return status.get(cluster);
@@ -115,16 +109,4 @@ public class ClusterController extends AbstractComponent
controller.shutdown();
}
- /**
- * Block until we are connected to zookeeper server
- */
- private void verifyThatZooKeeperWorks(FleetControllerOptions options) throws Exception {
- if (options.zooKeeperServerAddress() != null && !"".equals(options.zooKeeperServerAddress())) {
- try (Curator curator = Curator.create(options.zooKeeperServerAddress())) {
- if ( ! curator.framework().blockUntilConnected(600, TimeUnit.SECONDS))
- com.yahoo.protect.Process.logAndDie("Failed to connect to ZK, dying and restarting container");
- }
- }
- }
-
}
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
index 68fcbcc4983..13b395a97f2 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServer.java
@@ -4,7 +4,9 @@ package com.yahoo.vespa.zookeeper;
import java.nio.file.Path;
/**
- * Interface for a component that starts/stops a ZooKeeper server.
+ * Interface for a component that starts/stops a ZooKeeper server. Implementations should make sure
+ * that the server is up and accepts connection (typically by returning from constructor only after
+ * writing a node to ZooKeeper successfully).
*
* @author hmusum
*/
diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
index 8161e4bba4b..5bf7c9bd3e9 100644
--- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
+++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java
@@ -12,6 +12,8 @@ import java.time.Duration;
* Starts or reconfigures zookeeper cluster.
* The QuorumPeer conditionally created here is owned by the Reconfigurer;
* when it already has a peer, that peer is used here in case start or shutdown is required.
+ * Guarantees that server is up by writing a node to ZooKeeper successfully before
+ * returning from constructor.
*
* @author hmusum
*/
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..bb2b02c5c9b 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
@@ -9,6 +9,9 @@ import java.nio.file.Path;
import java.time.Duration;
/**
+ * ZooKeeper server. Guarantees that the server is up by writing a node to ZooKeeper successfully before
+ * returning from constructor.
+ *
* @author Ulf Lilleengen
* @author Harald Musum
*/