use of org.apache.helix.controller.stages.CurrentStateComputationStage in project helix by apache.
the class TestTopStateHandoffMetrics method runCurrentStage.
private void runCurrentStage(Map<String, Map<String, String>> initialCurrentStates, Map<String, Map<String, String>> handOffCurrentStates) {
setupCurrentStates(generateCurrentStateMap(initialCurrentStates));
runStage(event, new ReadClusterDataStage());
runStage(event, new CurrentStateComputationStage());
setupCurrentStates(generateCurrentStateMap(handOffCurrentStates));
runStage(event, new ReadClusterDataStage());
runStage(event, new CurrentStateComputationStage());
}
use of org.apache.helix.controller.stages.CurrentStateComputationStage 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());
}
use of org.apache.helix.controller.stages.CurrentStateComputationStage 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);
}
use of org.apache.helix.controller.stages.CurrentStateComputationStage 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());
}
use of org.apache.helix.controller.stages.CurrentStateComputationStage in project helix by apache.
the class BestPossibleExternalViewVerifier method calcBestPossState.
/**
* calculate the best possible state note that DROPPED states are not checked since when
* kick off the BestPossibleStateCalcStage we are providing an empty current state map
*
* @param cache
* @return
* @throws Exception
*/
private BestPossibleStateOutput calcBestPossState(ClusterDataCache cache) throws Exception {
ClusterEvent event = new ClusterEvent(ClusterEventType.StateVerifier);
event.addAttribute(AttributeName.ClusterDataCache.name(), cache);
runStage(event, new ResourceComputationStage());
runStage(event, new CurrentStateComputationStage());
// TODO: be caution here, should be handled statelessly.
runStage(event, new BestPossibleStateCalcStage());
BestPossibleStateOutput output = event.getAttribute(AttributeName.BEST_POSSIBLE_STATE.name());
return output;
}
Aggregations