Search in sources :

Example 1 with BestPossibleStateCalcStage

use of org.apache.helix.controller.stages.BestPossibleStateCalcStage in project helix by apache.

the class TestP2PStateTransitionMessages method createPipeline.

private Pipeline createPipeline() {
    Pipeline pipeline = new Pipeline("test");
    pipeline.addStage(new ReadClusterDataStage());
    pipeline.addStage(new BestPossibleStateCalcStage());
    pipeline.addStage(new IntermediateStateCalcStage());
    pipeline.addStage(new MessageGenerationPhase());
    pipeline.addStage(new MessageSelectionStage());
    pipeline.addStage(new MessageThrottleStage());
    return pipeline;
}
Also used : ReadClusterDataStage(org.apache.helix.controller.stages.ReadClusterDataStage) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) IntermediateStateCalcStage(org.apache.helix.controller.stages.IntermediateStateCalcStage) MessageThrottleStage(org.apache.helix.controller.stages.MessageThrottleStage) MessageGenerationPhase(org.apache.helix.controller.stages.MessageGenerationPhase) MessageSelectionStage(org.apache.helix.controller.stages.MessageSelectionStage) Pipeline(org.apache.helix.controller.pipeline.Pipeline)

Example 2 with BestPossibleStateCalcStage

use of org.apache.helix.controller.stages.BestPossibleStateCalcStage in project helix by apache.

the class TestRebalancerMetrics method testLoadBalanceMetrics.

@Test
public void testLoadBalanceMetrics() {
    System.out.println("START testLoadBalanceMetrics at " + new Date(System.currentTimeMillis()));
    String resource = "testResourceName";
    int numPartition = 100;
    int numReplica = 3;
    int maxPending = 3;
    setupIdealState(5, new String[] { resource }, numPartition, numReplica, IdealState.RebalanceMode.FULL_AUTO, BuiltInStateModelDefinitions.MasterSlave.name());
    setupInstances(5);
    setupLiveInstances(4);
    setupStateModel();
    Map<String, Resource> resourceMap = getResourceMap(new String[] { resource }, numPartition, BuiltInStateModelDefinitions.MasterSlave.name());
    CurrentStateOutput currentStateOutput = new CurrentStateOutput();
    event.addAttribute(AttributeName.RESOURCES.name(), resourceMap);
    event.addAttribute(AttributeName.RESOURCES_TO_REBALANCE.name(), resourceMap);
    event.addAttribute(AttributeName.CURRENT_STATE.name(), currentStateOutput);
    ClusterStatusMonitor monitor = new ClusterStatusMonitor(_clusterName);
    monitor.active();
    event.addAttribute(AttributeName.clusterStatusMonitor.name(), monitor);
    runStage(event, new ReadClusterDataStage());
    runStage(event, new BestPossibleStateCalcStage());
    BestPossibleStateOutput bestPossibleStateOutput = event.getAttribute(AttributeName.BEST_POSSIBLE_STATE.name());
    currentStateOutput = copyCurrentStateFromBestPossible(bestPossibleStateOutput, resource);
    event.addAttribute(AttributeName.CURRENT_STATE.name(), currentStateOutput);
    setupLiveInstances(4);
    runStage(event, new ReadClusterDataStage());
    ClusterDataCache cache = event.getAttribute(AttributeName.ClusterDataCache.name());
    setupThrottleConfig(cache.getClusterConfig(), StateTransitionThrottleConfig.RebalanceType.LOAD_BALANCE, maxPending);
    runStage(event, new BestPossibleStateCalcStage());
    runStage(event, new IntermediateStateCalcStage());
    ClusterStatusMonitor clusterStatusMonitor = event.getAttribute(AttributeName.clusterStatusMonitor.name());
    ResourceMonitor resourceMonitor = clusterStatusMonitor.getResourceMonitor(resource);
    long numPendingLoadBalance = resourceMonitor.getPendingLoadRebalancePartitionGauge();
    Assert.assertTrue(numPendingLoadBalance > 0);
    Assert.assertEquals(resourceMonitor.getLoadRebalanceThrottledPartitionGauge(), numPendingLoadBalance - maxPending);
    System.out.println("END testLoadBalanceMetrics at " + new Date(System.currentTimeMillis()));
}
Also used : BestPossibleStateOutput(org.apache.helix.controller.stages.BestPossibleStateOutput) ClusterDataCache(org.apache.helix.controller.stages.ClusterDataCache) ReadClusterDataStage(org.apache.helix.controller.stages.ReadClusterDataStage) IntermediateStateCalcStage(org.apache.helix.controller.stages.IntermediateStateCalcStage) Resource(org.apache.helix.model.Resource) Date(java.util.Date) CurrentStateOutput(org.apache.helix.controller.stages.CurrentStateOutput) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) Test(org.testng.annotations.Test) BaseStageTest(org.apache.helix.controller.stages.BaseStageTest)

Example 3 with BestPossibleStateCalcStage

use of org.apache.helix.controller.stages.BestPossibleStateCalcStage in project helix by apache.

the class ClusterExternalViewVerifier method calculateBestPossibleState.

BestPossibleStateOutput calculateBestPossibleState(ClusterDataCache cache) throws Exception {
    ClusterEvent event = new ClusterEvent(ClusterEventType.StateVerifier);
    event.addAttribute(AttributeName.ClusterDataCache.name(), cache);
    List<Stage> stages = new ArrayList<Stage>();
    stages.add(new ResourceComputationStage());
    stages.add(new CurrentStateComputationStage());
    stages.add(new BestPossibleStateCalcStage());
    for (Stage stage : stages) {
        runStage(event, stage);
    }
    return event.getAttribute(AttributeName.BEST_POSSIBLE_STATE.name());
}
Also used : ClusterEvent(org.apache.helix.controller.stages.ClusterEvent) ResourceComputationStage(org.apache.helix.controller.stages.ResourceComputationStage) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) ArrayList(java.util.ArrayList) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) Stage(org.apache.helix.controller.pipeline.Stage) ResourceComputationStage(org.apache.helix.controller.stages.ResourceComputationStage) CurrentStateComputationStage(org.apache.helix.controller.stages.CurrentStateComputationStage) CurrentStateComputationStage(org.apache.helix.controller.stages.CurrentStateComputationStage)

Example 4 with BestPossibleStateCalcStage

use of org.apache.helix.controller.stages.BestPossibleStateCalcStage in project helix by apache.

the class TestSkipBestPossibleCalculation method test.

@Test()
public void test() throws Exception {
    int numResource = 5;
    for (int i = 0; i < numResource; i++) {
        String dbName = "TestDB_" + i;
        _setupTool.addResourceToCluster(CLUSTER_NAME, dbName, _PARTITIONS, STATE_MODEL, IdealState.RebalanceMode.CUSTOMIZED.name());
        _setupTool.rebalanceResource(CLUSTER_NAME, dbName, 3);
    }
    ClusterDataCache cache = new ClusterDataCache("CLUSTER_" + TestHelper.getTestClassName());
    cache.setTaskCache(false);
    cache.refresh(_manager.getHelixDataAccessor());
    ClusterEvent event = new ClusterEvent(CLUSTER_NAME, ClusterEventType.IdealStateChange);
    event.addAttribute(AttributeName.ClusterDataCache.name(), cache);
    runStage(_manager, event, new ResourceComputationStage());
    runStage(_manager, event, new CurrentStateComputationStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
    runStage(_manager, event, new BestPossibleStateCalcStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.notifyDataChange(HelixConstants.ChangeType.INSTANCE_CONFIG);
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
    runStage(_manager, event, new BestPossibleStateCalcStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.notifyDataChange(HelixConstants.ChangeType.IDEAL_STATE);
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
    runStage(_manager, event, new BestPossibleStateCalcStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.notifyDataChange(HelixConstants.ChangeType.LIVE_INSTANCE);
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
    runStage(_manager, event, new BestPossibleStateCalcStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.requireFullRefresh();
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
    runStage(_manager, event, new BestPossibleStateCalcStage());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.notifyDataChange(HelixConstants.ChangeType.CURRENT_STATE);
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), numResource);
    cache.notifyDataChange(HelixConstants.ChangeType.RESOURCE_CONFIG);
    cache.refresh(_manager.getHelixDataAccessor());
    Assert.assertEquals(cache.getCachedResourceAssignments().size(), 0);
}
Also used : ClusterEvent(org.apache.helix.controller.stages.ClusterEvent) ClusterDataCache(org.apache.helix.controller.stages.ClusterDataCache) ResourceComputationStage(org.apache.helix.controller.stages.ResourceComputationStage) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) CurrentStateComputationStage(org.apache.helix.controller.stages.CurrentStateComputationStage) Test(org.testng.annotations.Test)

Example 5 with BestPossibleStateCalcStage

use of org.apache.helix.controller.stages.BestPossibleStateCalcStage in project helix by apache.

the class TaskTestUtil method calculateBestPossibleState.

public static BestPossibleStateOutput calculateBestPossibleState(ClusterDataCache cache, HelixManager manager) throws Exception {
    ClusterEvent event = new ClusterEvent(ClusterEventType.Unknown);
    event.addAttribute(AttributeName.ClusterDataCache.name(), cache);
    event.addAttribute(AttributeName.helixmanager.name(), manager);
    List<Stage> stages = new ArrayList<Stage>();
    stages.add(new ReadClusterDataStage());
    stages.add(new ResourceComputationStage());
    stages.add(new CurrentStateComputationStage());
    stages.add(new BestPossibleStateCalcStage());
    for (Stage stage : stages) {
        runStage(event, stage);
    }
    return event.getAttribute(AttributeName.BEST_POSSIBLE_STATE.name());
}
Also used : ClusterEvent(org.apache.helix.controller.stages.ClusterEvent) ResourceComputationStage(org.apache.helix.controller.stages.ResourceComputationStage) ReadClusterDataStage(org.apache.helix.controller.stages.ReadClusterDataStage) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) ArrayList(java.util.ArrayList) BestPossibleStateCalcStage(org.apache.helix.controller.stages.BestPossibleStateCalcStage) Stage(org.apache.helix.controller.pipeline.Stage) ReadClusterDataStage(org.apache.helix.controller.stages.ReadClusterDataStage) ResourceComputationStage(org.apache.helix.controller.stages.ResourceComputationStage) CurrentStateComputationStage(org.apache.helix.controller.stages.CurrentStateComputationStage) CurrentStateComputationStage(org.apache.helix.controller.stages.CurrentStateComputationStage)

Aggregations

BestPossibleStateCalcStage (org.apache.helix.controller.stages.BestPossibleStateCalcStage)7 ClusterEvent (org.apache.helix.controller.stages.ClusterEvent)4 CurrentStateComputationStage (org.apache.helix.controller.stages.CurrentStateComputationStage)4 ReadClusterDataStage (org.apache.helix.controller.stages.ReadClusterDataStage)4 ResourceComputationStage (org.apache.helix.controller.stages.ResourceComputationStage)4 ClusterDataCache (org.apache.helix.controller.stages.ClusterDataCache)3 IntermediateStateCalcStage (org.apache.helix.controller.stages.IntermediateStateCalcStage)3 Test (org.testng.annotations.Test)3 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2 Stage (org.apache.helix.controller.pipeline.Stage)2 BaseStageTest (org.apache.helix.controller.stages.BaseStageTest)2 BestPossibleStateOutput (org.apache.helix.controller.stages.BestPossibleStateOutput)2 CurrentStateOutput (org.apache.helix.controller.stages.CurrentStateOutput)2 Resource (org.apache.helix.model.Resource)2 Pipeline (org.apache.helix.controller.pipeline.Pipeline)1 MessageGenerationPhase (org.apache.helix.controller.stages.MessageGenerationPhase)1 MessageSelectionStage (org.apache.helix.controller.stages.MessageSelectionStage)1 MessageThrottleStage (org.apache.helix.controller.stages.MessageThrottleStage)1