This is an automated email from the ASF dual-hosted git repository.

hulee pushed a commit to branch zooscalability
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/zooscalability by this push:
     new 10b56e6  Update listClusters() in ZkHelixAdmin (#895)
10b56e6 is described below

commit 10b56e6505cf5c76cc9be714de15121a844afd7f
Author: Hunter Lee <[email protected]>
AuthorDate: Fri Mar 13 17:28:01 2020 -0700

    Update listClusters() in ZkHelixAdmin (#895)
    
    This PR updates getClusters() in ZkHelixAdmin in realm-aware mode. It is 
difficult to reason about getting all clusters - and this method, on 
single-realm mode, is also broken anyways because in the case users create 
nested clusters, this method will end up returning nothing. This update is 
backward-compatible for single-realm users.
    
    Ideally, users should use Metadata Store Directory Service to get the list 
of all clusters.
---
 .../main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java   | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git 
a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java 
b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
index ea9b55a..5804dd9 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
@@ -954,6 +954,12 @@ public class ZKHelixAdmin implements HelixAdmin {
 
   @Override
   public List<String> getClusters() {
+    if (Boolean.getBoolean(SystemPropertyKeys.MULTI_ZK_ENABLED)
+        || _zkClient instanceof FederatedZkClient) {
+      throw new UnsupportedOperationException(
+          "getClusters() is not supported in multi-realm mode! Use Metadata 
Store Directory Service instead!");
+    }
+
     List<String> zkToplevelPathes = _zkClient.getChildren("/");
     List<String> result = new ArrayList<String>();
     for (String pathName : zkToplevelPathes) {
@@ -1925,7 +1931,10 @@ public class ZKHelixAdmin implements HelixAdmin {
 
       // Resolve RealmAwareZkClientConfig
       if (realmAwareZkClientConfig == null) {
-        realmAwareZkClientConfig = new 
RealmAwareZkClient.RealmAwareZkClientConfig();
+        // ZkHelixAdmin should have ZNRecordSerializer set by default
+        realmAwareZkClientConfig = new 
RealmAwareZkClient.RealmAwareZkClientConfig()
+            .setZkSerializer(
+                new 
org.apache.helix.zookeeper.datamodel.serializer.ZNRecordSerializer());
       }
 
       // Resolve RealmAwareZkConnectionConfig

Reply via email to