Merge branch 'helixli/master'

Conflicts:
        helix-admin-webapp/helix-admin-webapp-0.6.10-SNAPSHOT.ivy
        helix-admin-webapp/helix-admin-webapp-0.6.6-SNAPSHOT.ivy
        helix-admin-webapp/helix-admin-webapp-0.6.9-SNAPSHOT.ivy
        helix-admin-webapp/pom.xml
        
helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/JobResource.java
        
helix-admin-webapp/src/main/java/org/apache/helix/webapp/resources/SchedulerTasksResource.java
        
helix-admin-webapp/src/test/java/org/apache/helix/webapp/TestClusterManagementWebapp.java
        helix-agent/helix-agent-0.6.10-SNAPSHOT.ivy
        helix-agent/helix-agent-0.6.6-SNAPSHOT.ivy
        helix-agent/helix-agent-0.6.9-SNAPSHOT.ivy
        helix-agent/pom.xml
        helix-core/helix-core-0.6.10-SNAPSHOT.ivy
        helix-core/helix-core-0.6.6-SNAPSHOT.ivy
        helix-core/helix-core-0.6.9-SNAPSHOT.ivy
        helix-core/pom.xml
        helix-core/src/main/java/org/apache/helix/BaseDataAccessor.java
        helix-core/src/main/java/org/apache/helix/ConfigAccessor.java
        helix-core/src/main/java/org/apache/helix/HelixAdmin.java
        helix-core/src/main/java/org/apache/helix/HelixConstants.java
        helix-core/src/main/java/org/apache/helix/HelixDataAccessor.java
        helix-core/src/main/java/org/apache/helix/NotificationContext.java
        helix-core/src/main/java/org/apache/helix/PropertyPathBuilder.java
        helix-core/src/main/java/org/apache/helix/ZNRecord.java
        
helix-core/src/main/java/org/apache/helix/api/config/RebalanceConfig.java
        
helix-core/src/main/java/org/apache/helix/api/config/StateTransitionThrottleConfig.java
        
helix-core/src/main/java/org/apache/helix/api/config/StateTransitionTimeoutConfig.java
        
helix-core/src/main/java/org/apache/helix/controller/GenericHelixController.java
        
helix-core/src/main/java/org/apache/helix/controller/common/PartitionStateMap.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/AbstractRebalancer.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/AutoRebalancer.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/DelayedAutoRebalancer.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/SemiAutoRebalancer.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/strategy/AutoRebalanceStrategy.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/strategy/CrushRebalanceStrategy.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/strategy/MultiRoundCrushRebalanceStrategy.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/strategy/crushMapping/CRUSHPlacementAlgorithm.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/topology/Node.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/topology/Topology.java
        
helix-core/src/main/java/org/apache/helix/controller/rebalancer/util/RebalanceScheduler.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/BestPossibleStateCalcStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/BestPossibleStateOutput.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/ClusterDataCache.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/CurrentStateComputationStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/ExternalViewComputeStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/IntermediateStateCalcStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/MessageGenerationPhase.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/MessageSelectionStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/PersistAssignmentStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/ReadClusterDataStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/ResourceComputationStage.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/StateTransitionThrottleController.java
        
helix-core/src/main/java/org/apache/helix/controller/stages/TaskAssignmentStage.java
        
helix-core/src/main/java/org/apache/helix/manager/zk/CallbackHandler.java
        
helix-core/src/main/java/org/apache/helix/manager/zk/ParticipantManager.java
        helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixAdmin.java
        
helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixDataAccessor.java
        helix-core/src/main/java/org/apache/helix/manager/zk/ZKHelixManager.java
        helix-core/src/main/java/org/apache/helix/manager/zk/ZKUtil.java
        helix-core/src/main/java/org/apache/helix/manager/zk/ZkClient.java
        
helix-core/src/main/java/org/apache/helix/messaging/DefaultMessagingService.java
        
helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTask.java
        
helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java
        helix-core/src/main/java/org/apache/helix/model/ClusterConfig.java
        helix-core/src/main/java/org/apache/helix/model/IdealState.java
        helix-core/src/main/java/org/apache/helix/model/InstanceConfig.java
        helix-core/src/main/java/org/apache/helix/model/LeaderHistory.java
        helix-core/src/main/java/org/apache/helix/model/ParticipantHistory.java
        helix-core/src/main/java/org/apache/helix/model/ResourceConfig.java
        
helix-core/src/main/java/org/apache/helix/model/StateModelDefinition.java
        
helix-core/src/main/java/org/apache/helix/model/builder/IdealStateBuilder.java
        
helix-core/src/main/java/org/apache/helix/monitoring/ParticipantStatusMonitor.java
        
helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java
        
helix-core/src/main/java/org/apache/helix/monitoring/mbeans/InstanceMonitor.java
        
helix-core/src/main/java/org/apache/helix/monitoring/mbeans/JobMonitor.java
        
helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ParticipantMessageMonitor.java
        
helix-core/src/main/java/org/apache/helix/participant/statemachine/StateModelFactory.java
        
helix-core/src/main/java/org/apache/helix/task/DeprecatedTaskRebalancer.java
        
helix-core/src/main/java/org/apache/helix/task/FixedTargetTaskAssignmentCalculator.java
        
helix-core/src/main/java/org/apache/helix/task/GenericTaskAssignmentCalculator.java
        helix-core/src/main/java/org/apache/helix/task/JobConfig.java
        helix-core/src/main/java/org/apache/helix/task/JobContext.java
        helix-core/src/main/java/org/apache/helix/task/JobRebalancer.java
        helix-core/src/main/java/org/apache/helix/task/TaskConstants.java
        helix-core/src/main/java/org/apache/helix/task/TaskDriver.java
        helix-core/src/main/java/org/apache/helix/task/TaskRebalancer.java
        helix-core/src/main/java/org/apache/helix/task/TaskState.java
        helix-core/src/main/java/org/apache/helix/task/TaskStateModel.java
        
helix-core/src/main/java/org/apache/helix/task/TaskStateModelFactory.java
        helix-core/src/main/java/org/apache/helix/task/TaskUtil.java
        helix-core/src/main/java/org/apache/helix/task/Workflow.java
        helix-core/src/main/java/org/apache/helix/task/WorkflowConfig.java
        helix-core/src/main/java/org/apache/helix/task/WorkflowContext.java
        helix-core/src/main/java/org/apache/helix/task/WorkflowRebalancer.java
        helix-core/src/main/java/org/apache/helix/task/beans/JobBean.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterExternalViewVerifier.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterLiveNodesVerifier.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterStateVerifier.java
        helix-core/src/main/java/org/apache/helix/tools/ClusterVerifier.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/BestPossibleExternalViewVerifier.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/StrictMatchExternalViewVerifier.java
        
helix-core/src/main/java/org/apache/helix/tools/ClusterVerifiers/ZkHelixClusterVerifier.java
        helix-core/src/main/java/org/apache/helix/tools/IntegrationTestUtil.java
        helix-core/src/main/java/org/apache/helix/util/HelixUtil.java
        helix-core/src/test/java/org/apache/helix/Mocks.java
        helix-core/src/test/java/org/apache/helix/TestHelixTaskExecutor.java
        helix-core/src/test/java/org/apache/helix/TestPropertyPathBuilder.java
        helix-core/src/test/java/org/apache/helix/ZkUnitTestBase.java
        
helix-core/src/test/java/org/apache/helix/controller/rebalancer/TestAutoRebalanceStrategy.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleCalcStageCompatibility.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestBestPossibleStateCalcStage.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestCurrentStateComputationStage.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestRebalancePipeline.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceComputationStage.java
        
helix-core/src/test/java/org/apache/helix/controller/stages/TestResourceValidationStage.java
        
helix-core/src/test/java/org/apache/helix/controller/strategy/TestTopology.java
        
helix-core/src/test/java/org/apache/helix/integration/SinglePartitionLeaderStandByTest.java
        
helix-core/src/test/java/org/apache/helix/integration/TestAddNodeAfterControllerStart.java
        
helix-core/src/test/java/org/apache/helix/integration/TestBatchMessageHandling.java
        
helix-core/src/test/java/org/apache/helix/integration/TestBucketizedResource.java
        
helix-core/src/test/java/org/apache/helix/integration/TestCarryOverBadCurState.java
        
helix-core/src/test/java/org/apache/helix/integration/TestClusterStartsup.java
        helix-core/src/test/java/org/apache/helix/integration/TestDisable.java
        helix-core/src/test/java/org/apache/helix/integration/TestDriver.java
        helix-core/src/test/java/org/apache/helix/integration/TestDrop.java
        
helix-core/src/test/java/org/apache/helix/integration/TestEnableCompression.java
        
helix-core/src/test/java/org/apache/helix/integration/TestEnablePartitionDuringDisable.java
        
helix-core/src/test/java/org/apache/helix/integration/TestNullReplica.java
        
helix-core/src/test/java/org/apache/helix/integration/TestPartitionMovementThrottle.java
        
helix-core/src/test/java/org/apache/helix/integration/TestPersistAssignmentStage.java
        
helix-core/src/test/java/org/apache/helix/integration/TestRebalancerPersistAssignments.java
        
helix-core/src/test/java/org/apache/helix/integration/TestResourceGroupEndtoEnd.java
        
helix-core/src/test/java/org/apache/helix/integration/TestStartMultipleControllersWithSameName.java
        
helix-core/src/test/java/org/apache/helix/integration/TestStateTransitionCancellation.java
        
helix-core/src/test/java/org/apache/helix/integration/TestSyncSessionToController.java
        
helix-core/src/test/java/org/apache/helix/integration/ZkIntegrationTestBase.java
        
helix-core/src/test/java/org/apache/helix/integration/manager/MockParticipantManager.java
        
helix-core/src/test/java/org/apache/helix/integration/manager/TestParticipantManager.java
        
helix-core/src/test/java/org/apache/helix/integration/messaging/TestBatchMessage.java
        
helix-core/src/test/java/org/apache/helix/integration/messaging/TestBatchMessageWrapper.java
        
helix-core/src/test/java/org/apache/helix/integration/messaging/TestMessageThrottle.java
        
helix-core/src/test/java/org/apache/helix/integration/messaging/TestSchedulerMessage.java
        
helix-core/src/test/java/org/apache/helix/integration/rebalancer/TestAutoIsWithEmptyMap.java
        
helix-core/src/test/java/org/apache/helix/integration/rebalancer/TestAutoRebalance.java
        helix-core/src/test/java/org/apache/helix/integration/task/MockTask.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TaskTestBase.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TaskTestUtil.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestGenericTaskAssignmentCalculator.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestIndependentTaskRebalancer.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestJobQueueCleanUp.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestRebalanceRunningTask.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestRecurringJobQueue.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestRunJobsWithMissingTarget.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestTaskRebalancer.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestTaskRebalancerParallel.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestTaskRebalancerStopResume.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestTaskRetryDelay.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestTaskThrottling.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestUnregisteredCommand.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestUserContentStore.java
        
helix-core/src/test/java/org/apache/helix/integration/task/TestWorkflowJobDependency.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestWtCacheAsyncOpMultiThread.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestWtCacheAsyncOpSingleThread.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestWtCacheSyncOpSingleThread.java
        helix-core/src/test/java/org/apache/helix/manager/zk/TestZKUtil.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestZkBaseDataAccessor.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestZkCacheAsyncOpSingleThread.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestZkCacheSyncOpSingleThread.java
        helix-core/src/test/java/org/apache/helix/manager/zk/TestZkClient.java
        
helix-core/src/test/java/org/apache/helix/manager/zk/TestZkHelixAdmin.java
        
helix-core/src/test/java/org/apache/helix/messaging/TestDefaultMessagingService.java
        
helix-core/src/test/java/org/apache/helix/messaging/handling/TestConfigThreadpoolSize.java
        
helix-core/src/test/java/org/apache/helix/messaging/handling/TestHelixTaskExecutor.java
        
helix-core/src/test/java/org/apache/helix/messaging/handling/TestResourceThreadpoolSize.java
        
helix-core/src/test/java/org/apache/helix/monitoring/TestParticipantMonitor.java
        
helix-core/src/test/java/org/apache/helix/monitoring/mbeans/TestDisableResourceMbean.java
        
helix-core/src/test/java/org/apache/helix/participant/TestDistControllerElection.java
        
helix-core/src/test/java/org/apache/helix/task/TaskSynchronizedTestBase.java
        helix-core/src/test/java/org/apache/helix/task/TestCleanExpiredJobs.java
        
helix-core/src/test/java/org/apache/helix/task/TestScheduleDelayJobs.java
        
helix-core/src/test/java/org/apache/helix/task/TestSemiAutoStateTransition.java
        helix-core/src/test/java/org/apache/helix/tools/TestClusterSetup.java
        helix-core/src/test/java/org/apache/helix/tools/TestClusterVerifier.java
        pom.xml
        recipes/distributed-lock-manager/pom.xml
        recipes/pom.xml
        recipes/rabbitmq-consumer-group/pom.xml
        recipes/rsync-replicated-file-system/pom.xml
        recipes/service-discovery/pom.xml
        recipes/task-execution/pom.xml


Project: http://git-wip-us.apache.org/repos/asf/helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/helix/commit/fe0b6e80
Tree: http://git-wip-us.apache.org/repos/asf/helix/tree/fe0b6e80
Diff: http://git-wip-us.apache.org/repos/asf/helix/diff/fe0b6e80

Branch: refs/heads/master
Commit: fe0b6e800e24c52d514c78d1fbab3d6b0800803f
Parents: dd05393 d89fbb9
Author: Junkai Xue <j...@linkedin.com>
Authored: Tue Nov 7 16:48:26 2017 -0800
Committer: Junkai Xue <j...@linkedin.com>
Committed: Tue Nov 7 16:48:26 2017 -0800

----------------------------------------------------------------------
 .reviewboardrc                                  |    1 +
 bump-up.command                                 |   19 +-
 .../helix-admin-webapp-0.6.10-SNAPSHOT.ivy      |   46 -
 .../helix-admin-webapp-0.6.9-SNAPSHOT.ivy       |   46 +
 helix-admin-webapp/pom.xml                      |    2 +-
 .../helix/webapp/resources/JobResource.java     |    1 +
 .../resources/SchedulerTasksResource.java       |    5 +-
 .../webapp/TestClusterManagementWebapp.java     |    2 +-
 helix-agent/helix-agent-0.6.10-SNAPSHOT.ivy     |   96 -
 helix-agent/helix-agent-0.6.9-SNAPSHOT.ivy      |   96 +
 helix-agent/pom.xml                             |    2 +-
 helix-core/helix-core-0.6.10-SNAPSHOT.ivy       |   63 -
 helix-core/helix-core-0.6.9-SNAPSHOT.ivy        |   62 +
 helix-core/pom.xml                              |   17 +-
 .../java/org/apache/helix/BaseDataAccessor.java |    2 +-
 .../java/org/apache/helix/ConfigAccessor.java   |   49 +-
 .../org/apache/helix/ConfigChangeListener.java  |   19 +-
 .../apache/helix/ControllerChangeListener.java  |   12 +-
 .../helix/CurrentStateChangeListener.java       |   22 +-
 .../helix/ExternalViewChangeListener.java       |   22 +-
 .../main/java/org/apache/helix/GroupCommit.java |   23 +-
 .../main/java/org/apache/helix/HelixAdmin.java  |   52 +-
 .../java/org/apache/helix/HelixConstants.java   |    6 +-
 .../org/apache/helix/HelixDataAccessor.java     |   17 +-
 .../java/org/apache/helix/HelixManager.java     |  104 +-
 .../java/org/apache/helix/HelixProperty.java    |  121 +-
 .../apache/helix/IdealStateChangeListener.java  |   20 +-
 .../helix/InstanceConfigChangeListener.java     |   18 +-
 .../java/org/apache/helix/InstanceType.java     |   48 +-
 .../helix/LiveInstanceChangeListener.java       |   20 +-
 .../java/org/apache/helix/MessageListener.java  |   23 +-
 .../org/apache/helix/NotificationContext.java   |   58 +-
 .../main/java/org/apache/helix/PropertyKey.java |   76 +-
 .../org/apache/helix/PropertyPathBuilder.java   |   27 +
 .../java/org/apache/helix/PropertyType.java     |    1 +
 .../helix/ScopedConfigChangeListener.java       |   14 +-
 .../main/java/org/apache/helix/ZNRecord.java    |    4 +-
 .../helix/api/config/RebalanceConfig.java       |    5 +-
 .../config/StateTransitionThrottleConfig.java   |    5 +-
 .../config/StateTransitionTimeoutConfig.java    |    1 -
 .../apache/helix/api/listeners/BatchMode.java   |   28 +
 .../listeners/ClusterConfigChangeListener.java  |   36 +
 .../api/listeners/ConfigChangeListener.java     |   38 +
 .../api/listeners/ControllerChangeListener.java |   33 +
 .../listeners/CurrentStateChangeListener.java   |   40 +
 .../listeners/ExternalViewChangeListener.java   |   39 +
 .../api/listeners/IdealStateChangeListener.java |   39 +
 .../listeners/InstanceConfigChangeListener.java |   37 +
 .../listeners/LiveInstanceChangeListener.java   |   39 +
 .../helix/api/listeners/MessageListener.java    |   40 +
 .../apache/helix/api/listeners/PreFetch.java    |   29 +
 .../listeners/ResourceConfigChangeListener.java |   37 +
 .../listeners/ScopedConfigChangeListener.java   |   36 +
 .../helix/controller/ExternalViewGenerator.java |    2 +-
 .../controller/GenericHelixController.java      |  571 +-
 .../helix/controller/HelixControllerMain.java   |    3 +-
 .../controller/common/PartitionStateMap.java    |    2 +-
 .../controller/pipeline/AbstractBaseStage.java  |   18 +-
 .../helix/controller/pipeline/Pipeline.java     |   27 +-
 .../controller/pipeline/PipelineRegistry.java   |   19 +-
 .../apache/helix/controller/pipeline/Stage.java |    2 +-
 .../rebalancer/AbstractRebalancer.java          |  247 +-
 .../controller/rebalancer/AutoRebalancer.java   |   15 +-
 .../controller/rebalancer/CustomRebalancer.java |   14 +-
 .../rebalancer/DelayedAutoRebalancer.java       |  411 +-
 .../rebalancer/SemiAutoRebalancer.java          |  101 +-
 .../strategy/AutoRebalanceStrategy.java         |   37 +-
 .../strategy/CrushRebalanceStrategy.java        |   20 +-
 .../MultiRoundCrushRebalanceStrategy.java       |  114 +-
 .../crushMapping/CRUSHPlacementAlgorithm.java   |    5 +-
 .../controller/rebalancer/topology/Node.java    |    2 +
 .../rebalancer/topology/Topology.java           |   92 +-
 .../rebalancer/util/RebalanceScheduler.java     |    2 +-
 .../helix/controller/stages/AttributeName.java  |   10 +-
 .../stages/BestPossibleStateCalcStage.java      |  111 +-
 .../stages/BestPossibleStateOutput.java         |    9 +-
 .../controller/stages/ClusterDataCache.java     |  635 +-
 .../helix/controller/stages/ClusterEvent.java   |   48 +-
 .../stages/ClusterEventBlockingQueue.java       |   14 +-
 .../controller/stages/ClusterEventType.java     |   35 +
 .../stages/CompatibilityCheckStage.java         |    4 +-
 .../stages/CurrentStateComputationStage.java    |  163 +-
 .../controller/stages/CurrentStateOutput.java   |   13 +
 .../stages/ExternalViewComputeStage.java        |   45 +-
 .../stages/IntermediateStateCalcStage.java      |  675 +-
 .../stages/MessageGenerationPhase.java          |  226 +-
 .../stages/MessageSelectionStage.java           |    8 +-
 .../controller/stages/MessageThrottleStage.java |    2 +-
 .../stages/PersistAssignmentStage.java          |   79 +-
 .../controller/stages/ReadClusterDataStage.java |   80 +-
 .../stages/ResourceComputationStage.java        |   40 +-
 .../stages/ResourceValidationStage.java         |    2 +-
 .../StateTransitionThrottleController.java      |   55 +-
 .../stages/TargetExteralViewCalcStage.java      |  116 +
 .../controller/stages/TaskAssignmentStage.java  |   25 +-
 .../ParticipantHealthReportCollectorImpl.java   |   25 +-
 .../ParticipantHealthReportTask.java            |    2 +-
 .../helix/manager/zk/CallbackHandler.java       |  416 +-
 .../manager/zk/ControllerManagerHelper.java     |    6 +-
 .../manager/zk/DistributedLeaderElection.java   |    4 +-
 .../helix/manager/zk/ParticipantManager.java    |    4 +-
 .../apache/helix/manager/zk/ZKHelixAdmin.java   |  121 +-
 .../helix/manager/zk/ZKHelixDataAccessor.java   |   63 +-
 .../apache/helix/manager/zk/ZKHelixManager.java |  284 +-
 .../org/apache/helix/manager/zk/ZKUtil.java     |   55 +-
 .../helix/manager/zk/ZkAsyncCallbacks.java      |   35 +-
 .../helix/manager/zk/ZkBaseDataAccessor.java    |    1 +
 .../manager/zk/ZkCacheBaseDataAccessor.java     |   22 +-
 .../org/apache/helix/manager/zk/ZkClient.java   |  388 +-
 .../messaging/DefaultMessagingService.java      |    2 +-
 .../messaging/handling/BatchMessageHandler.java |    5 +-
 .../handling/HelixStateTransitionHandler.java   |   39 +-
 .../helix/messaging/handling/HelixTask.java     |   15 +-
 .../messaging/handling/HelixTaskExecutor.java   |  304 +-
 .../org/apache/helix/model/ClusterConfig.java   |  293 +-
 .../org/apache/helix/model/CurrentState.java    |   86 +-
 .../java/org/apache/helix/model/IdealState.java |  110 +-
 .../org/apache/helix/model/InstanceConfig.java  |   89 +-
 .../org/apache/helix/model/LeaderHistory.java   |   13 +
 .../java/org/apache/helix/model/Message.java    |    6 +-
 .../apache/helix/model/ParticipantHistory.java  |   47 +-
 .../org/apache/helix/model/PauseSignal.java     |   17 +
 .../org/apache/helix/model/ResourceConfig.java  |  148 +-
 .../helix/model/StateModelDefinition.java       |   62 +-
 .../helix/model/builder/IdealStateBuilder.java  |   52 +-
 .../monitoring/ParticipantStatusMonitor.java    |  155 -
 .../monitoring/mbeans/ClusterEventMonitor.java  |   92 +
 .../monitoring/mbeans/ClusterStatusMonitor.java |  368 +-
 .../mbeans/ClusterStatusMonitorMBean.java       |    5 +
 .../monitoring/mbeans/HelixCallbackMonitor.java |   99 +
 .../mbeans/HelixStageLatencyMonitor.java        |   98 -
 .../mbeans/HelixStageLatencyMonitorMBean.java   |   28 -
 .../monitoring/mbeans/InstanceMonitor.java      |   22 +-
 .../helix/monitoring/mbeans/JobMonitor.java     |    8 +-
 .../helix/monitoring/mbeans/MBeanRegistrar.java |  104 +
 .../mbeans/MessageLatencyMonitor.java           |   78 +
 .../monitoring/mbeans/MessageQueueMonitor.java  |    2 +-
 .../monitoring/mbeans/MonitorDomainNames.java   |   31 +
 .../mbeans/ParticipantMessageMonitor.java       |    8 +-
 .../mbeans/ParticipantStatusMonitor.java        |  192 +
 .../mbeans/PerInstanceResourceMonitor.java      |    8 +-
 .../monitoring/mbeans/ResourceMonitor.java      |  320 +-
 .../monitoring/mbeans/ResourceMonitorMBean.java |   34 -
 .../mbeans/StateTransitionStatMonitor.java      |   13 +-
 .../mbeans/StateTransitionStatMonitorMBean.java |    4 +-
 .../mbeans/ThreadPoolExecutorMonitor.java       |   52 +
 .../mbeans/ThreadPoolExecutorMonitorMBean.java  |   10 +
 .../monitoring/mbeans/ZkClientMonitor.java      |  135 +
 .../monitoring/mbeans/ZkClientMonitorMBean.java |   27 +
 .../monitoring/mbeans/ZkClientPathMonitor.java  |  176 +
 .../dynamicMBeans/DynamicMBeanProvider.java     |  210 +
 .../mbeans/dynamicMBeans/DynamicMetric.java     |  109 +
 .../dynamicMBeans/HistogramDynamicMetric.java   |  132 +
 .../dynamicMBeans/SimpleDynamicMetric.java      |   60 +
 .../statemachine/StateModelFactory.java         |   21 +
 .../helix/store/zk/ZkHelixPropertyStore.java    |    6 +-
 .../helix/task/DeprecatedTaskRebalancer.java    |   33 +-
 .../FixedTargetTaskAssignmentCalculator.java    |   34 +-
 .../task/GenericTaskAssignmentCalculator.java   |   48 +-
 .../java/org/apache/helix/task/JobConfig.java   |   12 +-
 .../java/org/apache/helix/task/JobContext.java  |   11 +-
 .../org/apache/helix/task/JobRebalancer.java    |  428 +-
 .../org/apache/helix/task/TaskConstants.java    |    5 +
 .../java/org/apache/helix/task/TaskDriver.java  |   47 +-
 .../org/apache/helix/task/TaskRebalancer.java   |   48 +-
 .../java/org/apache/helix/task/TaskState.java   |   12 +-
 .../org/apache/helix/task/TaskStateModel.java   |   14 +-
 .../helix/task/TaskStateModelFactory.java       |   37 +-
 .../java/org/apache/helix/task/TaskUtil.java    |   31 +-
 .../java/org/apache/helix/task/Workflow.java    |    1 +
 .../org/apache/helix/task/WorkflowConfig.java   |   51 +-
 .../org/apache/helix/task/WorkflowContext.java  |   44 +-
 .../apache/helix/task/WorkflowRebalancer.java   |  108 +-
 .../org/apache/helix/task/beans/JobBean.java    |    2 +-
 .../tools/ClusterExternalViewVerifier.java      |  148 +-
 .../helix/tools/ClusterLiveNodesVerifier.java   |   25 +-
 .../org/apache/helix/tools/ClusterSetup.java    |   13 +-
 .../helix/tools/ClusterStateVerifier.java       |  719 +-
 .../org/apache/helix/tools/ClusterVerifier.java |  122 +-
 .../BestPossibleExternalViewVerifier.java       |   48 +-
 .../StrictMatchExternalViewVerifier.java        |   90 +-
 .../ZkHelixClusterVerifier.java                 |   39 +-
 .../tools/DefaultIdealStateCalculator.java      |   14 +-
 .../apache/helix/tools/IntegrationTestUtil.java |    1 -
 .../java/org/apache/helix/util/HelixUtil.java   |   98 +-
 .../java/org/apache/helix/MockAccessor.java     |  234 +
 .../src/test/java/org/apache/helix/Mocks.java   |  708 --
 .../org/apache/helix/TestConfigAccessor.java    |    6 +-
 .../TestEspressoStorageClusterIdealState.java   |    4 +-
 .../java/org/apache/helix/TestGroupCommit.java  |    6 +-
 .../apache/helix/TestHelixConfigAccessor.java   |    4 +-
 .../org/apache/helix/TestHelixTaskExecutor.java |   14 +-
 .../org/apache/helix/TestHelixTaskHandler.java  |   12 +-
 .../test/java/org/apache/helix/TestHelper.java  |   10 +
 .../apache/helix/TestHierarchicalDataStore.java |    4 -
 .../org/apache/helix/TestListenerCallback.java  |  210 +-
 .../helix/TestListenerCallbackBatchMode.java    |  214 +
 .../helix/TestListenerCallbackPrefetch.java     |  207 +
 .../apache/helix/TestPropertyPathBuilder.java   |   20 +-
 .../java/org/apache/helix/TestRoutingTable.java |    6 +-
 .../java/org/apache/helix/TestZKCallback.java   |   21 +-
 .../apache/helix/TestZKRoutingInfoProvider.java |    6 +-
 .../java/org/apache/helix/ZkUnitTestBase.java   |   13 +-
 .../rebalancer/TestAbstractRebalancer.java      |   55 +
 .../rebalancer/TestAutoRebalanceStrategy.java   |   17 +-
 .../rebalancer/TestZeroReplicaAvoidance.java    |  118 +
 .../helix/controller/stages/BaseStageTest.java  |  135 +-
 .../controller/stages/DummyClusterManager.java  |   87 +-
 .../TestBestPossibleCalcStageCompatibility.java |    2 +
 .../stages/TestBestPossibleStateCalcStage.java  |   17 +-
 .../controller/stages/TestClusterDataCache.java |   64 +
 .../controller/stages/TestClusterEvent.java     |    4 +-
 .../stages/TestClusterEventBlockingQueue.java   |   14 +-
 .../stages/TestCompatibilityCheckStage.java     |    8 +-
 .../TestCurrentStateComputationStage.java       |    6 +-
 .../stages/TestMessageThrottleStage.java        |   15 +-
 .../stages/TestRebalancePipeline.java           |  133 +-
 .../stages/TestResourceComputationStage.java    |   10 +-
 .../stages/TestResourceValidationStage.java     |   26 +-
 .../stages/TestStateTransitionPrirority.java    |  329 +
 .../helix/controller/strategy/TestTopology.java |   12 +-
 ...estParticipantHealthReportCollectorImpl.java |    4 +-
 .../integration/DelayedTransitionBase.java      |   45 +
 .../helix/integration/IntegrationTest.java      |   38 -
 .../SinglePartitionLeaderStandByTest.java       |    3 +-
 .../helix/integration/TestAddClusterV2.java     |    1 +
 .../TestAddNodeAfterControllerStart.java        |   14 +-
 .../TestAddStateModelFactoryAfterConnect.java   |    1 +
 .../integration/TestAutoIsWithEmptyMap.java     |  104 -
 .../helix/integration/TestAutoRebalance.java    |  291 -
 .../TestAutoRebalancePartitionLimit.java        |  234 -
 .../helix/integration/TestBasicSpectator.java   |    1 +
 .../helix/integration/TestBatchMessage.java     |  355 -
 .../integration/TestBatchMessageHandling.java   |    5 +-
 .../integration/TestBatchMessageWrapper.java    |  147 -
 .../integration/TestBucketizedResource.java     |   70 +-
 .../integration/TestCMWithFailParticipant.java  |    1 +
 .../integration/TestCarryOverBadCurState.java   |   12 +-
 .../helix/integration/TestClusterStartsup.java  |    1 +
 .../integration/TestControllerLiveLock.java     |  129 -
 .../helix/integration/TestCustomIdealState.java |  135 -
 .../TestCustomizedIdealStateRebalancer.java     |  206 -
 .../apache/helix/integration/TestDisable.java   |   27 +-
 .../integration/TestDisableExternalView.java    |    1 +
 .../helix/integration/TestDisableNode.java      |    1 +
 .../helix/integration/TestDisablePartition.java |   16 +-
 .../helix/integration/TestDisableResource.java  |    2 +-
 .../integration/TestDistributedCMMain.java      |    1 +
 .../TestDistributedClusterController.java       |    3 +-
 .../apache/helix/integration/TestDriver.java    |   19 +-
 .../org/apache/helix/integration/TestDrop.java  |   85 +-
 .../helix/integration/TestDropResource.java     |    1 +
 .../integration/TestEnableCompression.java      |   12 +-
 .../TestEnablePartitionDuringDisable.java       |    6 +-
 .../helix/integration/TestErrorPartition.java   |    1 +
 .../helix/integration/TestExpandCluster.java    |    1 +
 .../integration/TestExternalViewUpdates.java    |   10 +-
 .../integration/TestFullAutoNodeTagging.java    |  480 --
 .../integration/TestHelixCustomCodeRunner.java  |    1 +
 .../helix/integration/TestHelixInstanceTag.java |    1 +
 .../TestHelixUsingDifferentParams.java          |    1 +
 .../helix/integration/TestInstanceAutoJoin.java |   76 -
 .../TestMessagePartitionStateMismatch.java      |    1 +
 .../helix/integration/TestMessageThrottle.java  |  148 -
 .../helix/integration/TestMessageThrottle2.java |  458 --
 .../helix/integration/TestMessagingService.java |  448 --
 .../integration/TestNonOfflineInitState.java    |  113 -
 .../helix/integration/TestNullReplica.java      |    9 +-
 .../TestParticipantErrorMessage.java            |   98 -
 .../TestParticipantNameCollision.java           |   54 -
 .../TestPartitionLevelTransitionConstraint.java |    1 +
 .../TestPartitionMovementThrottle.java          |  245 +-
 .../helix/integration/TestPauseSignal.java      |    1 +
 .../integration/TestPersistAssignmentStage.java |   36 +-
 .../TestRebalancerPersistAssignments.java       |   73 +-
 .../helix/integration/TestRenamePartition.java  |    1 +
 .../helix/integration/TestResetInstance.java    |    1 +
 .../integration/TestResetPartitionState.java    |    1 +
 .../helix/integration/TestResetResource.java    |    1 +
 .../integration/TestResourceGroupEndtoEnd.java  |    7 +-
 .../integration/TestRestartParticipant.java     |  117 -
 .../helix/integration/TestSchedulerMessage.java |  672 --
 .../integration/TestSchedulerMessage2.java      |  137 -
 .../integration/TestSchedulerMsgContraints.java |  190 -
 .../integration/TestSchedulerMsgUsingQueue.java |  133 -
 .../helix/integration/TestSchemataSM.java       |    1 +
 .../TestSessionExpiryInTransition.java          |    1 +
 .../helix/integration/TestStandAloneCMMain.java |    1 +
 .../TestStandAloneCMSessionExpiry.java          |    1 +
 ...estStartMultipleControllersWithSameName.java |    4 +-
 .../TestStateTransitionCancellation.java        |    7 +-
 .../integration/TestStateTransitionTimeout.java |  183 -
 .../helix/integration/TestStatusUpdate.java     |    2 +
 .../helix/integration/TestSwapInstance.java     |    1 +
 .../TestSyncSessionToController.java            |    3 +-
 .../integration/TestZkCallbackHandlerLeak.java  |   18 +-
 .../helix/integration/TestZkConnectionLost.java |  154 +
 .../integration/ZkIntegrationTestBase.java      |  125 -
 .../integration/ZkStandAloneCMTestBase.java     |  124 -
 .../integration/common/IntegrationTest.java     |   38 +
 .../common/ZkIntegrationTestBase.java           |  247 +
 .../common/ZkStandAloneCMTestBase.java          |  131 +
 .../TestClusterDataCacheSelectiveUpdate.java    |  179 +
 .../controller/TestControllerHistory.java       |   60 +
 .../controller/TestControllerLiveLock.java      |  129 +
 .../TestSkipBestPossibleCalculation.java        |   89 +
 .../controller/TestTargetExternalView.java      |   85 +
 .../manager/MockParticipantManager.java         |   16 +-
 .../manager/TestConsecutiveZkSessionExpiry.java |    6 +-
 .../TestDistributedControllerManager.java       |    2 +-
 .../manager/TestParticipantManager.java         |   10 +-
 .../manager/TestZkCallbackHandlerLeak.java      |   16 +-
 .../integration/manager/TestZkHelixAdmin.java   |   85 +
 .../integration/messaging/TestBatchMessage.java |  357 +
 .../messaging/TestBatchMessageWrapper.java      |  142 +
 .../messaging/TestMessageThrottle.java          |  148 +
 .../messaging/TestMessageThrottle2.java         |  459 ++
 .../messaging/TestMessagingService.java         |  449 ++
 .../messaging/TestSchedulerMessage.java         |  674 ++
 .../messaging/TestSchedulerMessage2.java        |  138 +
 .../messaging/TestSchedulerMsgContraints.java   |  191 +
 .../messaging/TestSchedulerMsgUsingQueue.java   |  134 +
 .../paticipant/TestInstanceAutoJoin.java        |   77 +
 .../paticipant/TestInstanceCurrentState.java    |   60 +
 .../paticipant/TestInstanceHistory.java         |   59 +
 .../paticipant/TestNodeOfflineTimeStamp.java    |   59 +
 .../paticipant/TestNonOfflineInitState.java     |  114 +
 .../paticipant/TestParticipantErrorMessage.java |   99 +
 .../TestParticipantNameCollision.java           |   55 +
 .../paticipant/TestRestartParticipant.java      |  118 +
 .../paticipant/TestStateTransitionTimeout.java  |  184 +
 .../TestStateTransitionTimeoutWithResource.java |  243 +
 .../TestCrushAutoRebalance.java                 |  316 +
 .../TestCrushAutoRebalanceNonRack.java          |  278 +
 ...rushAutoRebalanceTopoplogyAwareDisabled.java |   93 +
 .../TestDelayedAutoRebalance.java               |  342 +
 ...elayedAutoRebalanceWithDisabledInstance.java |  317 +
 .../TestDelayedAutoRebalanceWithRackaware.java  |  124 +
 .../rebalancer/TestAutoIsWithEmptyMap.java      |  103 +
 .../rebalancer/TestAutoRebalance.java           |  292 +
 .../TestAutoRebalancePartitionLimit.java        |  234 +
 .../TestAutoRebalanceWithDisabledInstance.java  |  168 +
 .../rebalancer/TestCustomIdealState.java        |  136 +
 .../TestCustomizedIdealStateRebalancer.java     |  204 +
 .../rebalancer/TestFullAutoNodeTagging.java     |  478 ++
 .../rebalancer/TestMixedModeAutoRebalance.java  |  284 +
 ...estPauseClusterWhenReachingMaxPartition.java |  139 +
 ...lusterWhenReachingOfflineInstancesLimit.java |  174 +
 .../rebalancer/TestSemiAutoRebalance.java       |  228 +
 .../rebalancer/TestZeroReplicaAvoidance.java    |  220 +
 .../apache/helix/integration/task/MockTask.java |   53 +-
 .../helix/integration/task/TaskTestBase.java    |    3 +-
 .../helix/integration/task/TaskTestUtil.java    |   54 +-
 .../TestGenericTaskAssignmentCalculator.java    |   41 +-
 .../task/TestIndependentTaskRebalancer.java     |   10 +-
 .../helix/integration/task/TestJobFailure.java  |  152 +
 .../task/TestJobFailureHighThreshold.java       |  116 +
 .../task/TestJobFailureTaskNotStarted.java      |  202 +
 .../integration/task/TestJobQueueCleanUp.java   |    9 +-
 .../helix/integration/task/TestJobTimeout.java  |  164 +
 .../task/TestJobTimeoutTaskNotStarted.java      |  178 +
 .../task/TestRebalanceRunningTask.java          |   12 +-
 .../integration/task/TestRecurringJobQueue.java |   42 +-
 .../task/TestRunJobsWithMissingTarget.java      |    6 +-
 .../integration/task/TestTaskRebalancer.java    |   10 +-
 .../task/TestTaskRebalancerParallel.java        |   16 +-
 .../task/TestTaskRebalancerStopResume.java      |   18 +-
 .../integration/task/TestTaskRetryDelay.java    |    4 +-
 .../integration/task/TestTaskThreadLeak.java    |   82 +
 .../integration/task/TestTaskThrottling.java    |    6 +-
 .../task/TestUnregisteredCommand.java           |    2 +-
 .../integration/task/TestUserContentStore.java  |    2 +-
 .../task/TestWorkflowJobDependency.java         |    3 +-
 .../helix/manager/zk/TestHandleNewSession.java  |    2 +-
 .../manager/zk/TestLiveInstanceBounce.java      |    2 +-
 .../zk/TestWtCacheAsyncOpMultiThread.java       |   18 +-
 .../zk/TestWtCacheAsyncOpSingleThread.java      |   28 +-
 .../zk/TestWtCacheSyncOpSingleThread.java       |   26 +-
 .../org/apache/helix/manager/zk/TestZKUtil.java |   15 +-
 .../manager/zk/TestZkBaseDataAccessor.java      |   34 +-
 .../zk/TestZkCacheAsyncOpSingleThread.java      |   29 +-
 .../zk/TestZkCacheSyncOpSingleThread.java       |    5 +-
 .../apache/helix/manager/zk/TestZkClient.java   |  183 +-
 .../helix/manager/zk/TestZkHelixAdmin.java      |  105 +-
 .../zk/TestZkManagerFlappingDetection.java      |    2 +-
 .../manager/zk/TestZkStateChangeListener.java   |    3 +-
 .../helix/messaging/TestAsyncCallbackSvc.java   |    5 +-
 .../messaging/TestDefaultMessagingService.java  |    9 +-
 .../handling/TestBatchMessageModeConfigs.java   |   83 +
 .../handling/TestConfigThreadpoolSize.java      |   42 +-
 .../handling/TestHelixTaskExecutor.java         |   65 +-
 .../handling/TestResourceThreadpoolSize.java    |  112 +-
 .../apache/helix/mock/MockBaseDataAccessor.java |  253 +
 .../helix/mock/MockClusterMessagingService.java |   84 +
 .../org/apache/helix/mock/MockHelixAdmin.java   |  372 ++
 .../java/org/apache/helix/mock/MockManager.java |  338 +
 .../mock/participant/MockHelixTaskExecutor.java |   42 +
 .../statemodel/MockMasterSlaveStateModel.java   |   36 +
 .../statemodel/MockStateModelAnnotated.java     |   44 +
 .../mock/statemodel/MockTaskStateModel.java     |   47 +
 .../statemodel/MockTaskStateModelFactory.java   |   64 +
 .../TestClusterEventStatusMonitor.java          |   94 +
 .../TestClusterStatusMonitorLifecycle.java      |   30 +-
 .../monitoring/TestParticipantMonitor.java      |    4 +-
 .../mbeans/TestDisableResourceMbean.java        |    2 +-
 .../mbeans/TestDropResourceMetricsReset.java    |    2 +-
 .../mbeans/TestHelixCallbackMonitor.java        |   92 +
 .../mbeans/TestRebalancerMetrics.java           |  164 +
 .../mbeans/TestResetClusterMetrics.java         |    2 +-
 .../monitoring/mbeans/TestResourceMonitor.java  |  189 +-
 .../mbeans/TestTopStateHandoffMetrics.java      |  162 +
 .../monitoring/mbeans/TestZkClientMonitor.java  |  124 +
 .../helix/participant/MockZKHelixManager.java   |   87 +-
 .../participant/TestDistControllerElection.java |    6 +-
 .../store/zk/TestZkHelixPropertyStore.java      |   28 +-
 .../helix/task/TaskSynchronizedTestBase.java    |    7 +-
 .../apache/helix/task/TestCleanExpiredJobs.java |    5 +-
 .../helix/task/TestJobConfigValidation.java     |   40 +
 .../helix/task/TestScheduleDelayJobs.java       |    7 +-
 .../helix/task/TestSemiAutoStateTransition.java |    4 +-
 .../TestStrictMatchExternalViewVerifier.java    |   55 +
 .../apache/helix/tools/TestClusterSetup.java    |    4 +-
 .../apache/helix/tools/TestClusterVerifier.java |   77 +-
 .../apache/helix/tools/TestHelixAdminCli.java   |    2 +-
 .../helix/util/TestIdealStateAssignment.java    |   66 +
 .../org/apache/helix/util/TestInputLoader.java  |   56 +
 ...ractRebalancer.ComputeBestPossibleState.json |  175 +
 .../TestDelayedAutoRebalancer.MasterSlave.json  |  109 +
 ...TestDelayedAutoRebalancer.OnlineOffline.json |  106 +
 .../TestIdealStateAssignment.NoIdealState.json  |   84 +
 .../src/test/resources/TestJobFailure.json      |   24 +
 .../resources/TestPartitionLevelPriority.json   |  165 +
 .../resources/TestResourceLevelPriority.json    |   40 +
 ...xternalViewVerifier.ComputeIdealMapping.json |   32 +
 .../resources/TestTopStateHandoffMetrics.json   |  178 +
 helix-front/.angular-cli.json                   |   58 +
 helix-front/.editorconfig                       |   13 +
 helix-front/.env                                |    1 +
 helix-front/.gitignore                          |   44 +
 helix-front/.vscode/launch.json                 |   29 +
 helix-front/README.md                           |   20 +
 helix-front/assemble/assembly.xml               |   59 +
 helix-front/assemble/bin/start-helix-ui.sh      |   11 +
 helix-front/assemble/package.json               |   19 +
 helix-front/assemble/package.sh                 |   12 +
 helix-front/client/app/app-routing.module.ts    |  143 +
 helix-front/client/app/app.component.html       |   22 +
 helix-front/client/app/app.component.scss       |   32 +
 helix-front/client/app/app.component.spec.ts    |   48 +
 helix-front/client/app/app.component.ts         |   60 +
 helix-front/client/app/app.module.ts            |   49 +
 .../client/app/chooser/chooser.module.ts        |   20 +
 .../helix-list/helix-list.component.html        |   15 +
 .../helix-list/helix-list.component.scss        |    8 +
 .../helix-list/helix-list.component.spec.ts     |   40 +
 .../chooser/helix-list/helix-list.component.ts  |   28 +
 .../app/chooser/shared/chooser.service.spec.ts  |   21 +
 .../app/chooser/shared/chooser.service.ts       |   12 +
 .../cluster-detail.component.html               |   54 +
 .../cluster-detail.component.scss               |    5 +
 .../cluster-detail.component.spec.ts            |   38 +
 .../cluster-detail/cluster-detail.component.ts  |  185 +
 .../cluster-list/cluster-list.component.html    |   27 +
 .../cluster-list/cluster-list.component.scss    |   22 +
 .../cluster-list/cluster-list.component.spec.ts |   37 +
 .../cluster-list/cluster-list.component.ts      |   80 +
 .../client/app/cluster/cluster.component.html   |   11 +
 .../client/app/cluster/cluster.component.scss   |    4 +
 .../app/cluster/cluster.component.spec.ts       |   38 +
 .../client/app/cluster/cluster.component.ts     |   25 +
 .../client/app/cluster/cluster.module.ts        |   35 +
 .../client/app/cluster/shared/cluster.model.ts  |   35 +
 .../app/cluster/shared/cluster.resolver.ts      |   17 +
 .../app/cluster/shared/cluster.service.spec.ts  |   18 +
 .../app/cluster/shared/cluster.service.ts       |   52 +
 .../config-detail/config-detail.component.html  |   10 +
 .../config-detail/config-detail.component.scss  |   19 +
 .../config-detail.component.spec.ts             |   36 +
 .../config-detail/config-detail.component.ts    |  115 +
 .../app/configuration/configuration.module.ts   |   19 +
 .../shared/configuration.service.spec.ts        |   18 +
 .../shared/configuration.service.ts             |   46 +
 .../controller-detail.component.html            |   23 +
 .../controller-detail.component.scss            |    7 +
 .../controller-detail.component.spec.ts         |   36 +
 .../controller-detail.component.ts              |   35 +
 .../client/app/controller/controller.module.ts  |   18 +
 .../app/controller/shared/controller.model.ts   |   15 +
 .../shared/controller.service.spec.ts           |   18 +
 .../app/controller/shared/controller.service.ts |   23 +
 helix-front/client/app/core/core.module.ts      |   10 +
 .../client/app/core/helix.service.spec.ts       |   18 +
 helix-front/client/app/core/helix.service.ts    |  101 +
 helix-front/client/app/core/settings.ts         |    5 +
 helix-front/client/app/core/user.service.ts     |   29 +
 .../history-list/history-list.component.html    |   33 +
 .../history-list/history-list.component.scss    |   14 +
 .../history-list/history-list.component.spec.ts |   36 +
 .../history-list/history-list.component.ts      |   65 +
 .../client/app/history/history.module.ts        |   21 +
 .../client/app/history/shared/history.model.ts  |    6 +
 .../app/history/shared/history.service.spec.ts  |   18 +
 .../app/history/shared/history.service.ts       |   53 +
 .../instance-detail.component.html              |   44 +
 .../instance-detail.component.scss              |   10 +
 .../instance-detail.component.spec.ts           |   36 +
 .../instance-detail.component.ts                |   84 +
 .../instance-list/instance-list.component.html  |   37 +
 .../instance-list/instance-list.component.scss  |   13 +
 .../instance-list.component.spec.ts             |   36 +
 .../instance-list/instance-list.component.ts    |   48 +
 .../client/app/instance/instance.module.ts      |   29 +
 .../app/instance/shared/instance.model.ts       |   29 +
 .../instance/shared/instance.service.spec.ts    |   18 +
 .../app/instance/shared/instance.service.ts     |   76 +
 .../partition-detail.component.html             |   46 +
 .../partition-detail.component.scss             |    5 +
 .../partition-detail.component.spec.ts          |   30 +
 .../partition-detail.component.ts               |   23 +
 .../partition-list.component.html               |   63 +
 .../partition-list.component.scss               |   13 +
 .../partition-list.component.spec.ts            |   38 +
 .../partition-list/partition-list.component.ts  |   69 +
 .../resource-detail-for-instance.component.html |   35 +
 .../resource-detail-for-instance.component.scss |   11 +
 ...source-detail-for-instance.component.spec.ts |   35 +
 .../resource-detail-for-instance.component.ts   |   37 +
 .../resource-detail.component.html              |   46 +
 .../resource-detail.component.scss              |   15 +
 .../resource-detail.component.spec.ts           |   38 +
 .../resource-detail.component.ts                |   86 +
 .../resource-list/resource-list.component.html  |   49 +
 .../resource-list/resource-list.component.scss  |    0
 .../resource-list.component.spec.ts             |   36 +
 .../resource-list/resource-list.component.ts    |  116 +
 .../resource-node-viewer.component.html         |    6 +
 .../resource-node-viewer.component.scss         |    0
 .../resource-node-viewer.component.spec.ts      |   34 +
 .../resource-node-viewer.component.ts           |   56 +
 .../client/app/resource/resource.module.ts      |   41 +
 .../app/resource/shared/resource.model.ts       |  110 +
 .../app/resource/shared/resource.resolver.ts    |   18 +
 .../resource/shared/resource.service.spec.ts    |   18 +
 .../app/resource/shared/resource.service.ts     |   98 +
 .../shared/data-table/data-table.component.html |   52 +
 .../shared/data-table/data-table.component.scss |   20 +
 .../data-table/data-table.component.spec.ts     |   36 +
 .../shared/data-table/data-table.component.ts   |   95 +
 .../detail-header/detail-header.component.html  |   17 +
 .../detail-header/detail-header.component.scss  |   40 +
 .../detail-header.component.spec.ts             |   30 +
 .../detail-header/detail-header.component.ts    |   38 +
 .../alert-dialog/alert-dialog.component.html    |    2 +
 .../alert-dialog/alert-dialog.component.scss    |    0
 .../alert-dialog/alert-dialog.component.spec.ts |   26 +
 .../alert-dialog/alert-dialog.component.ts      |   23 +
 .../confirm-dialog.component.html               |   12 +
 .../confirm-dialog.component.scss               |    0
 .../confirm-dialog.component.spec.ts            |   26 +
 .../confirm-dialog/confirm-dialog.component.ts  |   33 +
 .../input-dialog/input-dialog.component.html    |   29 +
 .../input-dialog/input-dialog.component.scss    |    0
 .../input-dialog/input-dialog.component.spec.ts |   26 +
 .../input-dialog/input-dialog.component.ts      |   44 +
 .../disabled-label.component.html               |    1 +
 .../disabled-label.component.scss               |   12 +
 .../disabled-label.component.spec.ts            |   25 +
 .../disabled-label/disabled-label.component.ts  |   18 +
 .../client/app/shared/helper.service.spec.ts    |   17 +
 helix-front/client/app/shared/helper.service.ts |   41 +
 .../input-inline/input-inline.component.html    |   32 +
 .../input-inline/input-inline.component.scss    |   20 +
 .../input-inline/input-inline.component.spec.ts |   30 +
 .../input-inline/input-inline.component.ts      |  100 +
 .../json-viewer/json-viewer.component.html      |    1 +
 .../json-viewer/json-viewer.component.scss      |    0
 .../json-viewer/json-viewer.component.spec.ts   |   29 +
 .../shared/json-viewer/json-viewer.component.ts |   33 +
 .../key-value-pairs.component.html              |    7 +
 .../key-value-pairs.component.scss              |   12 +
 .../key-value-pairs.component.spec.ts           |   25 +
 .../key-value-pairs.component.ts                |   25 +
 .../client/app/shared/models/node.model.ts      |  117 +
 .../node-viewer/node-viewer.component.html      |  188 +
 .../node-viewer/node-viewer.component.scss      |   42 +
 .../node-viewer/node-viewer.component.spec.ts   |   38 +
 .../shared/node-viewer/node-viewer.component.ts |  301 +
 helix-front/client/app/shared/shared.module.ts  |   71 +
 .../state-label/state-label.component.html      |    7 +
 .../state-label/state-label.component.scss      |   17 +
 .../state-label/state-label.component.spec.ts   |   25 +
 .../shared/state-label/state-label.component.ts |   18 +
 .../app/workflow/shared/workflow.model.ts       |   16 +
 .../workflow/shared/workflow.service.spec.ts    |   18 +
 .../app/workflow/shared/workflow.service.ts     |   20 +
 .../workflow-detail.component.html              |   20 +
 .../workflow-detail.component.scss              |    3 +
 .../workflow-detail.component.spec.ts           |   38 +
 .../workflow-detail.component.ts                |   38 +
 .../workflow-list/workflow-list.component.html  |   15 +
 .../workflow-list/workflow-list.component.scss  |    3 +
 .../workflow-list.component.spec.ts             |   35 +
 .../workflow-list/workflow-list.component.ts    |   38 +
 .../client/app/workflow/workflow.module.ts      |   22 +
 helix-front/client/assets/.gitkeep              |    0
 .../client/environments/environment.prod.ts     |    3 +
 helix-front/client/environments/environment.ts  |   12 +
 helix-front/client/favicon.ico                  |  Bin 0 -> 34868 bytes
 helix-front/client/index.html                   |   28 +
 helix-front/client/main.ts                      |   11 +
 helix-front/client/polyfills.ts                 |   69 +
 helix-front/client/styles.scss                  |   38 +
 helix-front/client/test.ts                      |   32 +
 helix-front/client/testing/stubs.ts             |    8 +
 helix-front/client/testing/testing.module.ts    |   27 +
 helix-front/client/theme.scss                   |   58 +
 helix-front/client/tsconfig.app.json            |   13 +
 helix-front/client/tsconfig.spec.json           |   20 +
 helix-front/client/typings.d.ts                 |    5 +
 helix-front/e2e/app.e2e-spec.ts                 |   14 +
 helix-front/e2e/app.po.ts                       |   11 +
 helix-front/e2e/tsconfig.e2e.json               |   12 +
 helix-front/karma.conf.js                       |   45 +
 helix-front/package.json                        |   70 +
 helix-front/pom.xml                             |  144 +
 helix-front/protractor.conf.js                  |   30 +
 helix-front/proxy.conf.json                     |    6 +
 helix-front/server/app.ts                       |   68 +
 helix-front/server/config.ts                    |   17 +
 helix-front/server/controllers/helix.ts         |   64 +
 helix-front/server/controllers/user.ts          |   36 +
 helix-front/server/routes.ts                    |   20 +
 helix-front/server/tsconfig.json                |    8 +
 helix-front/tsconfig.json                       |   20 +
 helix-front/tslint.json                         |  116 +
 helix-front/yarn.lock                           | 6315 ++++++++++++++++++
 helix-rest/LICENSE                              |  273 +
 helix-rest/NOTICE                               |   37 +
 helix-rest/helix-rest-0.6.9-SNAPSHOT.ivy        |   45 +
 helix-rest/pom.xml                              |  167 +
 helix-rest/src/assemble/assembly.xml            |   60 +
 helix-rest/src/main/config/log4j.properties     |   32 +
 .../helix/rest/common/ContextPropertyKeys.java  |   24 +
 .../apache/helix/rest/server/HelixRestMain.java |  123 +
 .../helix/rest/server/HelixRestServer.java      |  130 +
 .../apache/helix/rest/server/ServerContext.java |   79 +
 .../helix/rest/server/auditlog/AuditLog.java    |  285 +
 .../helix/rest/server/auditlog/AuditLogger.java |   27 +
 .../auditloggers/FileBasedAuditLogger.java      |   53 +
 .../rest/server/filters/AuditLogFilter.java     |  117 +
 .../helix/rest/server/filters/CORSFilter.java   |   60 +
 .../rest/server/resources/AbstractResource.java |  209 +
 .../rest/server/resources/ClusterAccessor.java  |  379 ++
 .../rest/server/resources/InstanceAccessor.java |  463 ++
 .../rest/server/resources/JobAccessor.java      |  199 +
 .../rest/server/resources/ResourceAccessor.java |  277 +
 .../server/resources/UIResourceAccessor.java    |   62 +
 .../rest/server/resources/WorkflowAccessor.java |  324 +
 helix-rest/src/main/webapp/WEB-INF/web.xml      |   26 +
 helix-rest/src/main/webapp/index.jsp            |   25 +
 helix-rest/src/test/conf/testng.xml             |   27 +
 .../helix/rest/server/AbstractTestClass.java    |  380 ++
 .../helix/rest/server/TestClusterAccessor.java  |  301 +
 .../helix/rest/server/TestInstanceAccessor.java |  137 +
 .../helix/rest/server/TestJobAccessor.java      |  152 +
 .../helix/rest/server/TestResourceAccessor.java |  143 +
 .../helix/rest/server/TestWorkflowAccessor.java |  150 +
 helix-rest/src/test/resources/log4j.properties  |   41 +
 pom.xml                                         |  147 +-
 recipes/distributed-lock-manager/pom.xml        |    2 +-
 recipes/pom.xml                                 |    2 +-
 recipes/rabbitmq-consumer-group/pom.xml         |    2 +-
 recipes/rsync-replicated-file-system/pom.xml    |    2 +-
 recipes/service-discovery/pom.xml               |    2 +-
 recipes/task-execution/pom.xml                  |    2 +-
 scripts/runSingleTest.sh                        |   39 +
 676 files changed, 44744 insertions(+), 10276 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/main/java/org/apache/helix/HelixProperty.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/main/java/org/apache/helix/PropertyKey.java
----------------------------------------------------------------------
diff --cc helix-core/src/main/java/org/apache/helix/PropertyKey.java
index b95c790,20cb833..775db7a
--- a/helix-core/src/main/java/org/apache/helix/PropertyKey.java
+++ b/helix-core/src/main/java/org/apache/helix/PropertyKey.java
@@@ -301,12 -329,36 +329,41 @@@ public class PropertyKey 
        return new PropertyKey(ERRORS, Error.class, _clusterName, instanceName);
      }
  
 +    public PropertyKey participantHistory(String instanceName) {
 +      return new PropertyKey(INSTANCE_HISTORY, ParticipantHistory.class, 
_clusterName,
 +          instanceName);
 +    }
 +
      /**
+      * Get a property key associated with {@link Error} for an instance under 
a session
+      * @param instanceName
+      * @param sessionId
+      * @return {@link PropertyKey}
+      */
+     public PropertyKey errors(String instanceName, String sessionId) {
+       return new PropertyKey(ERRORS, Error.class, _clusterName, instanceName, 
sessionId);
+     }
+ 
+ 
+     /**
+      * Get a property key associated with {@link Error} for an instance under 
a session of
+      * specified resource
+      * @param instanceName
+      * @param sessionId
+      * @param resourceName
+      * @return {@link PropertyKey}
+      */
+     public PropertyKey errors(String instanceName, String sessionId, String 
resourceName) {
+       return new PropertyKey(ERRORS, Error.class, _clusterName, instanceName, 
sessionId,
+           resourceName);
+     }
+ 
+     public PropertyKey participantHistory(String instanceName) {
+       return new PropertyKey(INSTANCE_HISTORY, ParticipantHistory.class, 
_clusterName,
+           instanceName);
+     }
+ 
+     /**
       * Get a property key associated with a specific {@link Message} on an 
instance
       * @param instanceName
       * @param messageId

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixStateTransitionHandler.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/main/java/org/apache/helix/messaging/handling/HelixStateTransitionHandler.java
index e07ca90,008f623..3f4615a
--- 
a/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixStateTransitionHandler.java
+++ 
b/helix-core/src/main/java/org/apache/helix/messaging/handling/HelixStateTransitionHandler.java
@@@ -355,15 -368,16 +368,23 @@@ public class HelixStateTransitionHandle
                                  message.getPartitionName(),
                                  message.getFromState(),
                                  message.getToState(),
-                                 message.getTgtSessionId()));
+                                 message.getTgtSessionId(),
+                                 message.getMsgId()));
+ 
+       if (_cancelled) {
+         throw new HelixRollbackException(String.format(
+             "Instance %s, partition %s state transition from %s to %s on 
session %s has been cancelled, message id: %s",
+             message.getTgtName(), message.getPartitionName(), 
message.getFromState(),
+             message.getToState(), message.getTgtSessionId(), 
message.getMsgId()));
+       }
  
 +      if (_cancelled) {
 +        throw new HelixRollbackException(String.format(
 +            "Instance %s, partition %s state transition from %s to %s on 
session %s has been cancelled",
 +            message.getTgtName(), message.getPartitionName(), 
message.getFromState(),
 +            message.getToState(), message.getTgtSessionId()));
 +      }
 +
        Object result = methodToInvoke.invoke(_stateModel, new Object[] { 
message, context });
        taskResult.setSuccess(true);
        String resultStr;

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestAddClusterV2.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestAddStateModelFactoryAfterConnect.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestBasicSpectator.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/TestBasicSpectator.java
index 78f0c72,a24ded4..e621350
--- 
a/helix-core/src/test/java/org/apache/helix/integration/TestBasicSpectator.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/TestBasicSpectator.java
@@@ -28,8 -28,9 +28,9 @@@ import org.apache.helix.HelixManager
  import org.apache.helix.HelixManagerFactory;
  import org.apache.helix.InstanceType;
  import org.apache.helix.NotificationContext;
+ import org.apache.helix.integration.common.ZkStandAloneCMTestBase;
  import org.apache.helix.model.ExternalView;
 -import org.apache.helix.tools.ClusterStateVerifier;
 +import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
  import org.testng.Assert;
  import org.testng.annotations.Test;
  

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDisableExternalView.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDisableNode.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/TestDisableNode.java
index 9171276,6b6c280..f66a1ed
--- a/helix-core/src/test/java/org/apache/helix/integration/TestDisableNode.java
+++ b/helix-core/src/test/java/org/apache/helix/integration/TestDisableNode.java
@@@ -19,9 -19,10 +19,10 @@@ package org.apache.helix.integration
   * under the License.
   */
  
+ import org.apache.helix.integration.common.ZkStandAloneCMTestBase;
  import org.apache.helix.manager.zk.ZKHelixAdmin;
  import org.apache.helix.tools.ClusterSetup;
 -import org.apache.helix.tools.ClusterStateVerifier;
 +import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
  import org.testng.Assert;
  import org.testng.annotations.Test;
  

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDisablePartition.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/TestDisablePartition.java
index 3b849d5,32f581f..3d363f6
--- 
a/helix-core/src/test/java/org/apache/helix/integration/TestDisablePartition.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/TestDisablePartition.java
@@@ -38,9 -42,10 +42,10 @@@ import org.apache.helix.model.ExternalV
  import org.apache.helix.model.IdealState;
  import org.apache.helix.model.IdealState.RebalanceMode;
  import org.apache.helix.tools.ClusterSetup;
 -import org.apache.helix.tools.ClusterStateVerifier;
 +import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
  import org.apache.log4j.Logger;
  import org.testng.Assert;
+ import org.testng.annotations.DataProvider;
  import org.testng.annotations.Test;
  
  import com.google.common.collect.Lists;

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDisableResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDistributedCMMain.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDistributedClusterController.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestDropResource.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/TestDropResource.java
index 82486a8,7f0b77c..48763db
--- 
a/helix-core/src/test/java/org/apache/helix/integration/TestDropResource.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/TestDropResource.java
@@@ -20,9 -20,10 +20,10 @@@ package org.apache.helix.integration
   */
  
  import org.apache.helix.TestHelper;
+ import org.apache.helix.integration.common.ZkStandAloneCMTestBase;
  import org.apache.helix.integration.manager.MockParticipantManager;
  import org.apache.helix.tools.ClusterSetup;
 -import org.apache.helix.tools.ClusterStateVerifier;
 +import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
  import org.testng.Assert;
  import org.testng.annotations.Test;
  

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestErrorPartition.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestExternalViewUpdates.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestHelixCustomCodeRunner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestHelixInstanceTag.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/TestHelixInstanceTag.java
index 25a0b92,211cca1..34af958
--- 
a/helix-core/src/test/java/org/apache/helix/integration/TestHelixInstanceTag.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/TestHelixInstanceTag.java
@@@ -24,9 -24,10 +24,10 @@@ import java.util.Set
  
  import org.apache.helix.HelixDataAccessor;
  import org.apache.helix.HelixManager;
+ import org.apache.helix.integration.common.ZkStandAloneCMTestBase;
  import org.apache.helix.model.ExternalView;
  import org.apache.helix.model.InstanceConfig;
 -import org.apache.helix.tools.ClusterStateVerifier;
 +import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
  import org.testng.Assert;
  import org.testng.annotations.Test;
  

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestPartitionLevelTransitionConstraint.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestPauseSignal.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestRenamePartition.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestResetInstance.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestResetPartitionState.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestResetResource.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestSchemataSM.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestSessionExpiryInTransition.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestStandAloneCMMain.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestStandAloneCMSessionExpiry.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestSwapInstance.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/TestZkCallbackHandlerLeak.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/common/ZkStandAloneCMTestBase.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/common/ZkStandAloneCMTestBase.java
index 0000000,e89e5b0..e00e6bb
mode 000000,100644..100644
--- 
a/helix-core/src/test/java/org/apache/helix/integration/common/ZkStandAloneCMTestBase.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/common/ZkStandAloneCMTestBase.java
@@@ -1,0 -1,131 +1,131 @@@
+ package org.apache.helix.integration.common;
+ 
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *   http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied.  See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ 
+ import java.util.Date;
+ 
+ import org.apache.helix.HelixManager;
+ import org.apache.helix.HelixManagerFactory;
+ import org.apache.helix.InstanceType;
+ import org.apache.helix.integration.manager.ClusterControllerManager;
+ import org.apache.helix.integration.manager.MockParticipantManager;
+ import org.apache.helix.tools.ClusterSetup;
 -import org.apache.helix.tools.ClusterStateVerifier;
 -import 
org.apache.helix.tools.ClusterStateVerifier.BestPossAndExtViewZkVerifier;
 -import org.apache.helix.tools.ClusterStateVerifier.MasterNbInExtViewVerifier;
++import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
++import 
org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier.BestPossAndExtViewZkVerifier;
++import 
org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier.MasterNbInExtViewVerifier;
+ import org.apache.log4j.Logger;
+ import org.testng.Assert;
+ import org.testng.annotations.AfterClass;
+ import org.testng.annotations.BeforeClass;
+ 
+ /**
+  * setup a storage cluster and start a zk-based cluster controller in 
stand-alone mode
+  * start 5 dummy participants verify the current states at end
+  */
+ 
+ public class ZkStandAloneCMTestBase extends ZkIntegrationTestBase {
+   private static Logger LOG = Logger.getLogger(ZkStandAloneCMTestBase.class);
+ 
+   protected static final int NODE_NR = 5;
+   protected static final int START_PORT = 12918;
+   protected static final String STATE_MODEL = "MasterSlave";
+   protected static final String TEST_DB = "TestDB";
+   protected static final int _PARTITIONS = 20;
+ 
+   protected ClusterSetup _setupTool;
+   protected HelixManager _manager;
+   protected final String CLASS_NAME = getShortClassName();
+   protected final String CLUSTER_NAME = CLUSTER_PREFIX + "_" + CLASS_NAME;
+ 
+   protected MockParticipantManager[] _participants = new 
MockParticipantManager[NODE_NR];
+   protected ClusterControllerManager _controller;
+ 
+   protected int _replica = 3;
+ 
+   @BeforeClass
+   public void beforeClass() throws Exception {
+     // Logger.getRootLogger().setLevel(Level.INFO);
+     System.out.println("START " + CLASS_NAME + " at " + new 
Date(System.currentTimeMillis()));
+ 
+     String namespace = "/" + CLUSTER_NAME;
+     if (_gZkClient.exists(namespace)) {
+       _gZkClient.deleteRecursive(namespace);
+     }
+     _setupTool = new ClusterSetup(ZK_ADDR);
+ 
+     // setup storage cluster
+     _setupTool.addCluster(CLUSTER_NAME, true);
+     _setupTool.addResourceToCluster(CLUSTER_NAME, TEST_DB, _PARTITIONS, 
STATE_MODEL);
+     for (int i = 0; i < NODE_NR; i++) {
+       String storageNodeName = PARTICIPANT_PREFIX + "_" + (START_PORT + i);
+       _setupTool.addInstanceToCluster(CLUSTER_NAME, storageNodeName);
+     }
+     _setupTool.rebalanceStorageCluster(CLUSTER_NAME, TEST_DB, _replica);
+ 
+     // start dummy participants
+     for (int i = 0; i < NODE_NR; i++) {
+       String instanceName = PARTICIPANT_PREFIX + "_" + (START_PORT + i);
+       _participants[i] = new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, 
instanceName);
+       _participants[i].syncStart();
+     }
+ 
+     // start controller
+     String controllerName = CONTROLLER_PREFIX + "_0";
+     _controller = new ClusterControllerManager(ZK_ADDR, CLUSTER_NAME, 
controllerName);
+     _controller.syncStart();
+ 
+     boolean result =
+         ClusterStateVerifier
+             .verifyByZkCallback(new MasterNbInExtViewVerifier(ZK_ADDR, 
CLUSTER_NAME));
+ 
+     Assert.assertTrue(result);
+ 
+     result =
+         ClusterStateVerifier.verifyByZkCallback(new 
BestPossAndExtViewZkVerifier(ZK_ADDR,
+             CLUSTER_NAME));
+     Assert.assertTrue(result);
+ 
+     // create cluster manager
+     _manager = HelixManagerFactory
+         .getZKHelixManager(CLUSTER_NAME, "Admin", InstanceType.ADMINISTRATOR, 
ZK_ADDR);
+     _manager.connect();
+   }
+ 
+   @AfterClass
+   public void afterClass() throws Exception {
+     /**
+      * shutdown order: 1) disconnect the controller 2) disconnect participants
+      */
+ 
+     if (_controller != null && _controller.isConnected()) {
+       _controller.syncStop();
+     }
+     for (int i = 0; i < NODE_NR; i++) {
+       if (_participants[i] != null && _participants[i].isConnected()) {
+         _participants[i].syncStop();
+       }
+     }
+     if (_manager != null && _manager.isConnected()) {
+       _manager.disconnect();
+     }
+ 
+     System.out.println("END " + CLASS_NAME + " at " + new 
Date(System.currentTimeMillis()));
+   }
+ }

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/controller/TestControllerLiveLock.java
----------------------------------------------------------------------
diff --cc 
helix-core/src/test/java/org/apache/helix/integration/controller/TestControllerLiveLock.java
index 0000000,6e2fa5d..c65b5ed
mode 000000,100644..100644
--- 
a/helix-core/src/test/java/org/apache/helix/integration/controller/TestControllerLiveLock.java
+++ 
b/helix-core/src/test/java/org/apache/helix/integration/controller/TestControllerLiveLock.java
@@@ -1,0 -1,129 +1,129 @@@
+ package org.apache.helix.integration.controller;
+ 
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *   http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing,
+  * software distributed under the License is distributed on an
+  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  * KIND, either express or implied.  See the License for the
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ 
+ import java.util.Date;
+ import java.util.Map;
+ import java.util.Random;
+ 
+ import org.apache.helix.BaseDataAccessor;
+ import org.apache.helix.HelixDataAccessor;
+ import org.apache.helix.PropertyKey;
+ import org.apache.helix.TestHelper;
+ import org.apache.helix.ZNRecord;
+ import org.apache.helix.ZkUnitTestBase;
+ import org.apache.helix.integration.manager.ClusterControllerManager;
+ import org.apache.helix.integration.manager.MockParticipantManager;
+ import org.apache.helix.manager.zk.ZKHelixDataAccessor;
+ import org.apache.helix.manager.zk.ZkBaseDataAccessor;
+ import org.apache.helix.model.ExternalView;
+ import org.apache.helix.model.IdealState.RebalanceMode;
 -import org.apache.helix.tools.ClusterStateVerifier;
++import org.apache.helix.tools.ClusterVerifiers.ClusterStateVerifier;
+ import org.apache.log4j.Logger;
+ import org.testng.Assert;
+ import org.testng.annotations.Test;
+ 
+ /**
+  * This is for testing Helix controller livelock @see Helix-541
+  * The test has a high probability to reproduce the problem
+  */
+ public class TestControllerLiveLock extends ZkUnitTestBase {
+   private static final Logger LOG = 
Logger.getLogger(TestControllerLiveLock.class);
+ 
+   @Test
+   public void test() throws Exception {
+     String className = TestHelper.getTestClassName();
+     String methodName = TestHelper.getTestMethodName();
+     String clusterName = className + "_" + methodName;
+     int n = 12;
+     final int p = 256;
+     BaseDataAccessor<ZNRecord> baseAccessor = new 
ZkBaseDataAccessor<ZNRecord>(_gZkClient);
+     final HelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, 
baseAccessor);
+     final PropertyKey.Builder keyBuilder = accessor.keyBuilder();
+ 
+     System.out.println("START " + clusterName + " at " + new 
Date(System.currentTimeMillis()));
+ 
+     TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
+         "localhost", // participant name prefix
+         "TestDB", // resource name prefix
+         1, // resources
+         p, // partitions per resource
+         n, // number of nodes
+         1, // replicas
+         "LeaderStandby", RebalanceMode.FULL_AUTO, true); // do rebalance
+ 
+     ClusterControllerManager controller =
+         new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
+     controller.syncStart();
+ 
+     // start participants
+     Random random = new Random();
+     MockParticipantManager[] participants = new MockParticipantManager[n];
+     for (int i = 0; i < n; i++) {
+       String instanceName = "localhost_" + (12918 + i);
+ 
+       participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, 
instanceName);
+       participants[i].syncStart();
+       Thread.sleep(Math.abs(random.nextInt()) % 500 + 500);
+     }
+ 
+     boolean result =
+         ClusterStateVerifier.verifyByZkCallback(new 
ClusterStateVerifier.BestPossAndExtViewZkVerifier(ZK_ADDR,
+             clusterName));
+     Assert.assertTrue(result);
+ 
+     // make sure all partitions are assigned and no partitions is assigned to 
STANDBY state
+     result = TestHelper.verify(new TestHelper.Verifier() {
+ 
+       @Override
+       public boolean verify() throws Exception {
+         ExternalView extView = 
accessor.getProperty(keyBuilder.externalView("TestDB0"));
+         for (int i = 0; i < p; i++) {
+           String partition = "TestDB0_" + i;
+           Map<String, String> map = 
extView.getRecord().getMapField(partition);
+           if (map == null || map.size() != 1) {
+             return false;
+           }
+         }
+         return true;
+       }
+     }, 10 * 1000);
+ 
+     if (!result) {
+       ExternalView extView = 
accessor.getProperty(keyBuilder.externalView("TestDB0"));
+       for (int i = 0; i < p; i++) {
+         String partition = "TestDB0_" + i;
+         Map<String, String> map = extView.getRecord().getMapField(partition);
+         if (map == null || map.size() != 1) {
+           LOG.error(partition + ": " + map);
+         }
+       }
+     }
+     Assert.assertTrue(result);
+ 
+     // clean up
+     controller.syncStop();
+     for (int i = 0; i < n; i++) {
+       participants[i].syncStop();
+     }
+ 
+     System.out.println("END " + clusterName + " at " + new 
Date(System.currentTimeMillis()));
+   }
+ }

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/manager/TestConsecutiveZkSessionExpiry.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/manager/TestDistributedControllerManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/helix/blob/fe0b6e80/helix-core/src/test/java/org/apache/helix/integration/manager/TestZkCallbackHandlerLeak.java
----------------------------------------------------------------------

Reply via email to