This is an automated email from the ASF dual-hosted git repository. jiajunwang pushed a commit to branch helix-0.9.x in repository https://gitbox.apache.org/repos/asf/helix.git
commit 35bbc7ca381548a9208bac48e1d73fd3545300b3 Author: Meng Zhang <[email protected]> AuthorDate: Tue Aug 25 09:58:49 2020 -0700 Minor fix to add participant auto registration --- .../main/java/org/apache/helix/ConfigAccessor.java | 10 ++++----- .../org/apache/helix/HelixPropertyFactory.java | 10 ++++++++- .../java/org/apache/helix/tools/ClusterSetup.java | 2 +- .../java/org/apache/helix/TestConfigAccessor.java | 4 ++-- .../org/apache/helix/tools/TestClusterSetup.java | 6 +++--- .../helix/rest/server/TestClusterAccessor.java | 24 +++++++++------------- 6 files changed, 30 insertions(+), 26 deletions(-) diff --git a/helix-core/src/main/java/org/apache/helix/ConfigAccessor.java b/helix-core/src/main/java/org/apache/helix/ConfigAccessor.java index da6edda..2efc61a 100644 --- a/helix-core/src/main/java/org/apache/helix/ConfigAccessor.java +++ b/helix-core/src/main/java/org/apache/helix/ConfigAccessor.java @@ -569,7 +569,7 @@ public class ConfigAccessor { * @return The instance of {@link CloudConfig} */ public CloudConfig getCloudConfig(String clusterName) { - if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { + if (!ZKUtil.isClusterSetup(clusterName, zkClient)) { throw new HelixException( String.format("Failed to get config. cluster: %s is not setup.", clusterName)); } @@ -591,7 +591,7 @@ public class ConfigAccessor { * @param cloudConfig */ public void deleteCloudConfigFields(String clusterName, CloudConfig cloudConfig) { - if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { + if (!ZKUtil.isClusterSetup(clusterName, zkClient)) { throw new HelixException("fail to delete cloud config. cluster: " + clusterName + " is NOT setup."); } @@ -610,7 +610,7 @@ public class ConfigAccessor { } private void updateCloudConfig(String clusterName, CloudConfig cloudConfig, boolean overwrite) { - if (!ZKUtil.isClusterSetup(clusterName, _zkClient)) { + if (!ZKUtil.isClusterSetup(clusterName, zkClient)) { throw new HelixException("Fail to update cloud config. cluster: " + clusterName + " is NOT setup."); } @@ -619,9 +619,9 @@ public class ConfigAccessor { String zkPath = scope.getZkPath(); if (overwrite) { - ZKUtil.createOrReplace(_zkClient, zkPath, cloudConfig.getRecord(), true); + ZKUtil.createOrReplace(zkClient, zkPath, cloudConfig.getRecord(), true); } else { - ZKUtil.createOrUpdate(_zkClient, zkPath, cloudConfig.getRecord(), true, true); + ZKUtil.createOrUpdate(zkClient, zkPath, cloudConfig.getRecord(), true, true); } } diff --git a/helix-core/src/main/java/org/apache/helix/HelixPropertyFactory.java b/helix-core/src/main/java/org/apache/helix/HelixPropertyFactory.java index fa394a2..e111f3b 100644 --- a/helix-core/src/main/java/org/apache/helix/HelixPropertyFactory.java +++ b/helix-core/src/main/java/org/apache/helix/HelixPropertyFactory.java @@ -22,6 +22,10 @@ package org.apache.helix; import java.io.IOException; import java.io.InputStream; import java.util.Properties; + +import org.apache.helix.manager.zk.ZNRecordSerializer; +import org.apache.helix.manager.zk.client.DedicatedZkClientFactory; +import org.apache.helix.manager.zk.client.HelixZkClient; import org.apache.helix.model.CloudConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +51,11 @@ public final class HelixPropertyFactory { * Clients may override these values. */ public HelixManagerProperty getHelixManagerProperty(String zkAddress, String clusterName) { - ConfigAccessor configAccessor = new ConfigAccessor(zkAddress); + HelixZkClient.ZkClientConfig clientConfig = new HelixZkClient.ZkClientConfig(); + clientConfig.setZkSerializer(new ZNRecordSerializer()); + HelixZkClient zkClient = DedicatedZkClientFactory.getInstance() + .buildZkClient(new HelixZkClient.ZkConnectionConfig(zkAddress), clientConfig); + ConfigAccessor configAccessor = new ConfigAccessor(zkClient); CloudConfig cloudConfig; // The try-catch logic is for backward compatibility reason only. Even if the cluster is not set // up yet, constructing a new ZKHelixManager should not throw an exception diff --git a/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java b/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java index 9663223..803f8a5 100644 --- a/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java +++ b/helix-core/src/main/java/org/apache/helix/tools/ClusterSetup.java @@ -175,7 +175,7 @@ public class ClusterSetup { // If cloud is enabled and Cloud Provider is Azure, populated the Topology information in cluster config if (cloudConfig.isCloudEnabled() && cloudConfig.getCloudProvider().equals(CloudProvider.AZURE.name())) { - ConfigAccessor configAccessor = new ConfigAccessor(_zkServerAddress); + ConfigAccessor configAccessor = new ConfigAccessor(_zkClient); ClusterConfig clusterConfig = new ClusterConfig(clusterName); clusterConfig.setTopology(AzureConstants.AZURE_TOPOLOGY); clusterConfig.setTopologyAwareEnabled(true); diff --git a/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java b/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java index 02b5a45..74fae40 100644 --- a/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java +++ b/helix-core/src/test/java/org/apache/helix/TestConfigAccessor.java @@ -216,7 +216,7 @@ public class TestConfigAccessor extends ZkUnitTestBase { _clusterSetup.addCluster(clusterName, false, cloudConfigInit); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); @@ -260,7 +260,7 @@ public class TestConfigAccessor extends ZkUnitTestBase { _clusterSetup.addCluster(clusterName, false, cloudConfigInit); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); diff --git a/helix-core/src/test/java/org/apache/helix/tools/TestClusterSetup.java b/helix-core/src/test/java/org/apache/helix/tools/TestClusterSetup.java index 1772521..446bb0a 100644 --- a/helix-core/src/test/java/org/apache/helix/tools/TestClusterSetup.java +++ b/helix-core/src/test/java/org/apache/helix/tools/TestClusterSetup.java @@ -356,7 +356,7 @@ public class TestClusterSetup extends ZkUnitTestBase { // add fake liveInstance ZKHelixDataAccessor accessor = - new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(ZK_ADDR)); + new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient)); Builder keyBuilder = new Builder(clusterName); LiveInstance liveInstance = new LiveInstance("localhost_12918"); liveInstance.setSessionId("session_0"); @@ -422,7 +422,7 @@ public class TestClusterSetup extends ZkUnitTestBase { ClusterSetup.processCommandLineArgs(new String[] { "--zkSvr", ZK_ADDR, "--enableResource", clusterName, "TestDB0", "false" }); - BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(ZK_ADDR); + BaseDataAccessor<ZNRecord> baseAccessor = new ZkBaseDataAccessor<ZNRecord>(_gZkClient); HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, baseAccessor); PropertyKey.Builder keyBuilder = accessor.keyBuilder(); IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0")); @@ -506,7 +506,7 @@ public class TestClusterSetup extends ZkUnitTestBase { _clusterSetup.addCluster(clusterName, false, cloudConfigInit); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestID"); diff --git a/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java b/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java index bcf0d0c..3dfb883 100644 --- a/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java +++ b/helix-rest/src/test/java/org/apache/helix/rest/server/TestClusterAccessor.java @@ -27,7 +27,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; - import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -39,19 +38,19 @@ import org.apache.helix.PropertyKey; import org.apache.helix.TestHelper; import org.apache.helix.ZNRecord; import org.apache.helix.cloud.azure.AzureConstants; +import org.apache.helix.cloud.constants.CloudProvider; import org.apache.helix.controller.rebalancer.DelayedAutoRebalancer; import org.apache.helix.controller.rebalancer.strategy.CrushEdRebalanceStrategy; import org.apache.helix.integration.manager.ClusterDistributedController; import org.apache.helix.manager.zk.ZKHelixDataAccessor; import org.apache.helix.manager.zk.ZKUtil; +import org.apache.helix.model.CloudConfig; import org.apache.helix.model.ClusterConfig; import org.apache.helix.model.ExternalView; import org.apache.helix.model.IdealState; import org.apache.helix.model.InstanceConfig; import org.apache.helix.model.LiveInstance; import org.apache.helix.model.MaintenanceSignal; -import org.apache.helix.model.CloudConfig; -import org.apache.helix.cloud.constants.CloudProvider; import org.apache.helix.rest.common.HelixRestNamespace; import org.apache.helix.rest.server.auditlog.AuditLog; import org.apache.helix.rest.server.resources.AbstractResource; @@ -66,9 +65,6 @@ import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import com.google.common.collect.ImmutableMap; -import com.sun.research.ws.wadl.HTTPMethods; - public class TestClusterAccessor extends AbstractTestClass { @BeforeClass @@ -591,7 +587,7 @@ public class TestClusterAccessor extends AbstractTestClass { Response.Status.CREATED.getStatusCode()); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); @@ -671,7 +667,7 @@ public class TestClusterAccessor extends AbstractTestClass { Response.Status.CREATED.getStatusCode()); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); @@ -701,7 +697,7 @@ public class TestClusterAccessor extends AbstractTestClass { Response.Status.CREATED.getStatusCode()); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertFalse(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); @@ -760,7 +756,7 @@ public class TestClusterAccessor extends AbstractTestClass { Response.Status.OK.getStatusCode()); // Read CloudConfig from Zookeeper and check the content - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig("TestCloud"); Assert.assertTrue(cloudConfigFromZk.isCloudEnabled()); Assert.assertEquals(cloudConfigFromZk.getCloudID(), "TestCloudID"); @@ -809,14 +805,14 @@ public class TestClusterAccessor extends AbstractTestClass { Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE), Response.Status.CREATED.getStatusCode()); // Read CloudConfig from Zookeeper and make sure it has been created - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertNotNull(cloudConfigFromZk); String urlBase = "clusters/" + clusterName + "/cloudconfig/"; delete(urlBase, Response.Status.OK.getStatusCode()); // Read CloudConfig from Zookeeper and make sure it has been removed - _configAccessor = new ConfigAccessor(ZK_ADDR); + _configAccessor = new ConfigAccessor(_gZkClient); cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertNull(cloudConfigFromZk); @@ -847,7 +843,7 @@ public class TestClusterAccessor extends AbstractTestClass { Entity.entity(OBJECT_MAPPER.writeValueAsString(record), MediaType.APPLICATION_JSON_TYPE), Response.Status.CREATED.getStatusCode()); // Read CloudConfig from Zookeeper and make sure it has been created - ConfigAccessor _configAccessor = new ConfigAccessor(ZK_ADDR); + ConfigAccessor _configAccessor = new ConfigAccessor(_gZkClient); CloudConfig cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertNotNull(cloudConfigFromZk); @@ -860,7 +856,7 @@ public class TestClusterAccessor extends AbstractTestClass { Response.Status.OK.getStatusCode()); // Read CloudConfig from Zookeeper and make sure it has been removed - _configAccessor = new ConfigAccessor(ZK_ADDR); + _configAccessor = new ConfigAccessor(_gZkClient); cloudConfigFromZk = _configAccessor.getCloudConfig(clusterName); Assert.assertNull(cloudConfigFromZk.getCloudID()); Assert.assertNull(cloudConfigFromZk.getCloudProvider());
