diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2023-02-07 15:45:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-07 15:45:35 +0100 |
commit | 76bf11cdf1edc7eeb9291bc3e3c388fd568ad587 (patch) | |
tree | b544be7a99e6afd2b8781dbf3858f75061733380 | |
parent | 2c8c643e3fcd0aaaf8e47094e5059194239f1600 (diff) | |
parent | 6fdaaf7318bcc75c179adaf1c1800d2e4b7d78eb (diff) |
Merge pull request #25924 from vespa-engine/hmusum/remove-block-until-connected
No need to wait until connected in cluster controller
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 */ |