You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2017/10/04 01:49:44 UTC
[3/7] helix git commit: Prevent ClusterControllerManager from
starting multiple times
Prevent ClusterControllerManager from starting multiple times
ClusterControllerManager is a runnable wrapper for a Helix Controller that could run on a separate thread for testing purpose. Since HelixManager.connect() should not be called more than once, this Controller should not be started more than once, either.
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/94f39618
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/94f39618
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/94f39618
Branch: refs/heads/master
Commit: 94f3961842263d04eef89019a1955e4c49e3305c
Parents: d5a2395
Author: Weihan Kong <wk...@linkedin.com>
Authored: Wed Feb 8 23:38:49 2017 -0800
Committer: Junkai Xue <jx...@linkedin.com>
Committed: Tue Oct 3 15:07:52 2017 -0700
----------------------------------------------------------------------
.../integration/manager/ClusterControllerManager.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/94f39618/helix-core/src/test/java/org/apache/helix/integration/manager/ClusterControllerManager.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/integration/manager/ClusterControllerManager.java b/helix-core/src/test/java/org/apache/helix/integration/manager/ClusterControllerManager.java
index 9e10771..92ed52b 100644
--- a/helix-core/src/test/java/org/apache/helix/integration/manager/ClusterControllerManager.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/manager/ClusterControllerManager.java
@@ -36,6 +36,8 @@ public class ClusterControllerManager extends ZKHelixManager implements Runnable
private final CountDownLatch _stopCountDown = new CountDownLatch(1);
private final CountDownLatch _waitStopFinishCountDown = new CountDownLatch(1);
+ private boolean _started = false;
+
public ClusterControllerManager(String zkAddr, String clusterName) {
this(zkAddr, clusterName, "controller");
}
@@ -48,13 +50,20 @@ public class ClusterControllerManager extends ZKHelixManager implements Runnable
_stopCountDown.countDown();
try {
_waitStopFinishCountDown.await();
+ _started = false;
} catch (InterruptedException e) {
LOG.error("Interrupted waiting for finish", e);
}
}
+ // This should not be called more than once because HelixManager.connect() should not be called more than once.
public void syncStart() {
- // TODO: prevent start multiple times
+ if (_started) {
+ throw new RuntimeException("Helix Controller already started. Do not call syncStart() more than once.");
+ } else {
+ _started = true;
+ }
+
new Thread(this).start();
try {
_startCountDown.await();