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