summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnstein Ressem <aressem@verizonmedia.com>2020-12-15 14:57:56 +0100
committerGitHub <noreply@github.com>2020-12-15 14:57:56 +0100
commit67c255a1b6cd0d9f9ab74eb418794e1a6366f877 (patch)
treeecce9de58307c793ef8ff2b11ff822189e42f550
parentad4a9a58f97d7558eff48c6cd857cae3b570d55d (diff)
parent86dfbb00e3507dd6695cea9cf2b51bd2b8fa8c7c (diff)
Merge pull request #15821 from vespa-engine/revert-15812-hmuusum/remove-unnecessary-dependency
Revert "Stop depending on ZooKeeperProvider"
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ClusterController.java12
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java10
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java16
-rw-r--r--clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java26
5 files changed, 66 insertions, 8 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 52a37c9489e..9020765f777 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,4 +1,4 @@
-// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2017 Yahoo Holdings. 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.google.inject.Inject;
@@ -29,11 +29,21 @@ public class ClusterController extends AbstractComponent
private final Map<String, FleetController> controllers = new TreeMap<>();
private final Map<String, StatusHandler.ContainerStatusPageServer> status = new TreeMap<>();
+ /**
+ * Dependency injection constructor for controller. {@link ZooKeeperProvider} argument given
+ * to ensure that zookeeper has started before we start polling it.
+ */
+ @SuppressWarnings("unused")
@Inject
+ public ClusterController(ZooKeeperProvider zooKeeperProvider) {
+ this();
+ }
+
ClusterController() {
metricWrapper = new JDiscMetricWrapper(null);
}
+
public void setOptions(FleetControllerOptions options, Metric metricImpl) throws Exception {
metricWrapper.updateMetricImplementation(metricImpl);
verifyThatZooKeeperWorks(options);
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java
new file mode 100644
index 00000000000..f961297643e
--- /dev/null
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/DummyZooKeeperProvider.java
@@ -0,0 +1,10 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
+
+/**
+ * A dummy zookeeper provider when we do not run our own zookeeper instance.
+ *
+ * @author Ulf Lilleengen
+ */
+public class DummyZooKeeperProvider implements ZooKeeperProvider {
+}
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java
new file mode 100644
index 00000000000..baad012a234
--- /dev/null
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/StandaloneZooKeeperProvider.java
@@ -0,0 +1,16 @@
+// Copyright 2017 Yahoo Holdings. 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.vespa.zookeeper.VespaZooKeeperServer;
+
+/**
+ * ZooKeeper provider that ensures we are running our own instance of zookeeper.
+ *
+ * @author Ulf Lilleengen
+ */
+public class StandaloneZooKeeperProvider implements ZooKeeperProvider {
+
+ public StandaloneZooKeeperProvider(VespaZooKeeperServer server) {
+ }
+
+}
diff --git a/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java
new file mode 100644
index 00000000000..bb18bcc65d6
--- /dev/null
+++ b/clustercontroller-apps/src/main/java/com/yahoo/vespa/clustercontroller/apps/clustercontroller/ZooKeeperProvider.java
@@ -0,0 +1,10 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.clustercontroller.apps.clustercontroller;
+
+/**
+ * Abstraction we can depend on providing us with a zookeeper server being up.
+ *
+ * @author Ulf Lilleengen
+ */
+public interface ZooKeeperProvider {
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
index b2aa1e6b704..14fbeb17aaf 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
@@ -54,11 +54,23 @@ public class ClusterControllerContainer extends Container implements
"com.yahoo.vespa.clustercontroller.apps.clustercontroller.StateRestApiV2Handler",
"/cluster/v2/*",
CLUSTERCONTROLLER_BUNDLE);
- addComponent("clustercontroller-zookeeper-server",
- runStandaloneZooKeeper
- ? "com.yahoo.vespa.zookeeper.VespaZooKeeperServerImpl"
- : "com.yahoo.vespa.zookeeper.DummyVespaZooKeeperServer",
- ZOOKEEPER_SERVER_BUNDLE);
+ if (runStandaloneZooKeeper) {
+ addComponent("clustercontroller-zkrunner",
+ "com.yahoo.vespa.zookeeper.VespaZooKeeperServerImpl",
+ ZOOKEEPER_SERVER_BUNDLE);
+ addComponent("clustercontroller-zkprovider",
+ "com.yahoo.vespa.clustercontroller.apps.clustercontroller.StandaloneZooKeeperProvider",
+ CLUSTERCONTROLLER_BUNDLE);
+ } else {
+ // TODO bjorncs/jonmv: remove extraneous ZooKeeperProvider layer
+ addComponent(
+ "clustercontroller-zkrunner",
+ "com.yahoo.vespa.zookeeper.DummyVespaZooKeeperServer",
+ ZOOKEEPER_SERVER_BUNDLE);
+ addComponent("clustercontroller-zkprovider",
+ "com.yahoo.vespa.clustercontroller.apps.clustercontroller.DummyZooKeeperProvider",
+ CLUSTERCONTROLLER_BUNDLE);
+ }
addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, "controller", isHosted));
// TODO: Why are bundles added here instead of in the cluster?
@@ -84,7 +96,7 @@ public class ClusterControllerContainer extends Container implements
return ContainerServiceType.CLUSTERCONTROLLER_CONTAINER;
}
- private void addHandler(Handler<?> h, String path) {
+ private void addHandler(Handler h, String path) {
h.addServerBindings(SystemBindingPattern.fromHttpPath(path));
super.addHandler(h);
}
@@ -104,7 +116,7 @@ public class ClusterControllerContainer extends Container implements
}
private void addHandler(String id, String className, String path, ComponentSpecification bundle) {
- addHandler(new Handler<>(createComponentModel(id, className, bundle)), path);
+ addHandler(new Handler(createComponentModel(id, className, bundle)), path);
}
private ReindexingContext reindexingContext() {