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 2018/01/25 21:49:31 UTC
[40/50] [abbrv] helix git commit: HELIX-690: don't new zkClient and
its dependencies in ServerContext constructor
HELIX-690: don't new zkClient and its dependencies in ServerContext constructor
Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/4d2734e7
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/4d2734e7
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/4d2734e7
Branch: refs/heads/master
Commit: 4d2734e723e79e2f7659be9fcbe238ed49fcb574
Parents: 310d476
Author: hrzhang <hr...@linkedin.com>
Authored: Thu Jan 4 17:43:36 2018 -0800
Committer: Junkai Xue <jx...@linkedin.com>
Committed: Wed Jan 24 18:33:02 2018 -0800
----------------------------------------------------------------------
.../apache/helix/rest/server/ServerContext.java | 33 +++++++++++++-------
1 file changed, 21 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/helix/blob/4d2734e7/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java
----------------------------------------------------------------------
diff --git a/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java b/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java
index 2a79e6b..02e74c5 100644
--- a/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java
+++ b/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java
@@ -37,10 +37,10 @@ import org.apache.helix.tools.ClusterSetup;
public class ServerContext {
private final String _zkAddr;
- private final ZkClient _zkClient;
- private final ZKHelixAdmin _zkHelixAdmin;
- private final ClusterSetup _clusterSetup;
- private final ConfigAccessor _configAccessor;
+ private ZkClient _zkClient;
+ private ZKHelixAdmin _zkHelixAdmin;
+ private ClusterSetup _clusterSetup;
+ private ConfigAccessor _configAccessor;
// 1 Cluster name will correspond to 1 helix data accessor
private final Map<String, HelixDataAccessor> _helixDataAccessorPool;
@@ -50,28 +50,34 @@ public class ServerContext {
public ServerContext(String zkAddr) {
_zkAddr = zkAddr;
- _zkClient = new ZkClient(_zkAddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
- ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
- // Accessors
- _configAccessor = new ConfigAccessor(getZkClient());
+ // We should NOT initiate _zkClient and anything that depends on _zkClient in
+ // constructor, as it is reasonable to start up HelixRestServer first and then
+ // ZooKeeper. In this case, initializing _zkClient will fail and HelixRestServer
+ // cannot be started correctly.
_helixDataAccessorPool = new HashMap<>();
_taskDriverPool = new HashMap<>();
-
- // High level interfaces
- _zkHelixAdmin = new ZKHelixAdmin(getZkClient());
- _clusterSetup = new ClusterSetup(getZkClient(), getHelixAdmin());
}
public ZkClient getZkClient() {
+ if (_zkClient == null) {
+ _zkClient = new ZkClient(_zkAddr, ZkClient.DEFAULT_SESSION_TIMEOUT,
+ ZkClient.DEFAULT_CONNECTION_TIMEOUT, new ZNRecordSerializer());
+ }
return _zkClient;
}
public HelixAdmin getHelixAdmin() {
+ if (_zkHelixAdmin == null) {
+ _zkHelixAdmin = new ZKHelixAdmin(getZkClient());
+ }
return _zkHelixAdmin;
}
public ClusterSetup getClusterSetup() {
+ if (_clusterSetup == null) {
+ _clusterSetup = new ClusterSetup(getZkClient(), getHelixAdmin());
+ }
return _clusterSetup;
}
@@ -85,6 +91,9 @@ public class ServerContext {
}
public ConfigAccessor getConfigAccessor() {
+ if (_configAccessor == null) {
+ _configAccessor = new ConfigAccessor(getZkClient());
+ }
return _configAccessor;
}