This is an automated email from the ASF dual-hosted git repository. jackie pushed a commit to branch fix_state_transition_max_threads in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit 35dad739b0e6dd2ed1d9f00a959835a076a57dd4 Author: Jackie (Xiaotian) Jiang <xaji...@linkedin.com> AuthorDate: Tue Jun 18 18:54:58 2019 -0700 Only set Helix cluster properties when creating the cluster If Helix cluster does not exist, create the cluster with auto-join enabled Do not set the STATE_TRANSITION.maxThreads when creating the cluster so Helix can go with the default value (40) --- .../helix/core/util/HelixSetupUtils.java | 51 +++++++--------------- 1 file changed, 15 insertions(+), 36 deletions(-) diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/util/HelixSetupUtils.java b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/util/HelixSetupUtils.java index f65a8ce..82c4cab 100644 --- a/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/util/HelixSetupUtils.java +++ b/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/util/HelixSetupUtils.java @@ -19,10 +19,9 @@ package org.apache.pinot.controller.helix.core.util; import com.google.common.base.Preconditions; -import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.TimeUnit; import org.apache.helix.AccessOption; import org.apache.helix.HelixAdmin; @@ -39,12 +38,10 @@ import org.apache.helix.manager.zk.ZKHelixManager; import org.apache.helix.manager.zk.ZNRecordSerializer; import org.apache.helix.manager.zk.ZkBaseDataAccessor; import org.apache.helix.manager.zk.ZkClient; -import org.apache.helix.messaging.handling.HelixTaskExecutor; import org.apache.helix.model.HelixConfigScope; import org.apache.helix.model.HelixConfigScope.ConfigScopeProperty; import org.apache.helix.model.IdealState; import org.apache.helix.model.MasterSlaveSMD; -import org.apache.helix.model.Message.MessageType; import org.apache.helix.model.StateModelDefinition; import org.apache.helix.model.builder.HelixConfigScopeBuilder; import org.apache.helix.store.zk.ZkHelixPropertyStore; @@ -70,28 +67,30 @@ import static org.apache.pinot.common.utils.CommonConstants.Helix.REBALANCE_DELA public class HelixSetupUtils { private static final Logger LOGGER = LoggerFactory.getLogger(HelixSetupUtils.class); - public static synchronized HelixManager setup(String helixClusterName, String zkPath, - String helixControllerInstanceId) { - setupHelixCluster(helixClusterName, zkPath); - - return startHelixControllerInStandadloneMode(helixClusterName, zkPath, helixControllerInstanceId); + public static HelixManager setup(String helixClusterName, String zkPath, String helixControllerInstanceId) { + setupHelixClusterIfNeeded(helixClusterName, zkPath); + return startHelixControllerInStandaloneMode(helixClusterName, zkPath, helixControllerInstanceId); } /** * Set up a brand new Helix cluster if it doesn't exist. */ - public static void setupHelixCluster(String helixClusterName, String zkPath) { - final HelixAdmin admin = new ZKHelixAdmin(zkPath); + private static void setupHelixClusterIfNeeded(String helixClusterName, String zkPath) { + HelixAdmin admin = new ZKHelixAdmin(zkPath); if (admin.getClusters().contains(helixClusterName)) { LOGGER.info("Helix cluster: {} already exists", helixClusterName); - return; + } else { + LOGGER.info("Creating a new Helix cluster: {}", helixClusterName); + admin.addCluster(helixClusterName, false); + // Enable Auto-Join for the cluster + HelixConfigScope configScope = + new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(helixClusterName).build(); + admin.setConfig(configScope, Collections.singletonMap(ZKHelixManager.ALLOW_PARTICIPANT_AUTO_JOIN, "true")); + LOGGER.info("New Helix cluster: {} created", helixClusterName); } - LOGGER.info("Creating a new Helix cluster: {}", helixClusterName); - admin.addCluster(helixClusterName, false); - LOGGER.info("New Cluster: {} created.", helixClusterName); } - private static HelixManager startHelixControllerInStandadloneMode(String helixClusterName, String zkUrl, + private static HelixManager startHelixControllerInStandaloneMode(String helixClusterName, String zkUrl, String pinotControllerInstanceId) { LOGGER.info("Starting Helix Standalone Controller ... "); return HelixControllerMain @@ -107,9 +106,6 @@ public class HelixSetupUtils { Preconditions.checkState(admin.getClusters().contains(helixClusterName), String.format("Helix cluster: %s hasn't been set up", helixClusterName)); - // Ensure auto join. - ensureAutoJoin(helixClusterName, admin); - // Add segment state model definition if needed addSegmentStateModelDefinitionIfNeeded(helixClusterName, admin, zkPath, isUpdateStateModel); @@ -123,23 +119,6 @@ public class HelixSetupUtils { initPropertyStoreIfNeeded(helixClusterName, zkPath); } - private static void ensureAutoJoin(String helixClusterName, HelixAdmin admin) { - final HelixConfigScope scope = - new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER).forCluster(helixClusterName).build(); - String stateTransitionMaxThreads = MessageType.STATE_TRANSITION + "." + HelixTaskExecutor.MAX_THREADS; - List<String> keys = new ArrayList<>(); - keys.add(ZKHelixManager.ALLOW_PARTICIPANT_AUTO_JOIN); - keys.add(stateTransitionMaxThreads); - Map<String, String> configs = admin.getConfig(scope, keys); - if (!Boolean.TRUE.toString().equals(configs.get(ZKHelixManager.ALLOW_PARTICIPANT_AUTO_JOIN))) { - configs.put(ZKHelixManager.ALLOW_PARTICIPANT_AUTO_JOIN, Boolean.TRUE.toString()); - } - if (!Integer.toString(1).equals(configs.get(stateTransitionMaxThreads))) { - configs.put(stateTransitionMaxThreads, String.valueOf(1)); - } - admin.setConfig(scope, configs); - } - private static void addSegmentStateModelDefinitionIfNeeded(String helixClusterName, HelixAdmin admin, String zkPath, boolean isUpdateStateModel) { final String segmentStateModelName = --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org