if (isUpdateStateModel) { final StateModelDefinition curStateModelDef = admin.getStateModelDef(helixClusterName, segmentStateModelName); List<String> states = curStateModelDef.getStatesPriorityList(); if (states.contains(PinotHelixSegmentOnlineOfflineStateModelGenerator.CONSUMING_STATE)) { LOGGER.info("State model {} already updated to contain CONSUMING state", segmentStateModelName);
/** * Instantiate a validator instance * @param stateModelDef the state model definition to validate */ private StateModelDefinitionValidator(StateModelDefinition stateModelDef) { _stateModelDef = stateModelDef; _statePriorityList = stateModelDef.getStatesPriorityList(); _transitionPriorityList = stateModelDef.getStateTransitionPriorityList(); _stateSet = Sets.newHashSet(_statePriorityList); }
/** * Instantiate a validator instance * @param stateModelDef the state model definition to validate */ private StateModelDefinitionValidator(StateModelDefinition stateModelDef) { _stateModelDef = stateModelDef; _statePriorityList = stateModelDef.getStatesPriorityList(); _transitionPriorityList = stateModelDef.getStateTransitionPriorityList(); _stateSet = Sets.newHashSet(_statePriorityList); }
@Override public int compare(String ins1, String ins2) { String state1 = _currentStateMap.get(ins1); String state2 = _currentStateMap.get(ins2); String topState = _stateModelDef.getStatesPriorityList().get(0); Set<String> preferredStates = new HashSet<String>(_stateModelDef.getSecondTopStates()); preferredStates.add(topState); int p1 = 1; int p2 = 1; if (state1 != null && preferredStates.contains(state1)) { p1 = 0; } if (state2 != null && preferredStates.contains(state2)) { p2 = 0; } return p1 - p2; } }
@Override public int compare(String ins1, String ins2) { String state1 = _currentStateMap.get(ins1); String state2 = _currentStateMap.get(ins2); String topState = _stateModelDef.getStatesPriorityList().get(0); Set<String> preferredStates = new HashSet<String>(_stateModelDef.getSecondTopStates()); preferredStates.add(topState); int p1 = 1; int p2 = 1; if (state1 != null && preferredStates.contains(state1)) { p1 = 0; } if (state2 != null && preferredStates.contains(state2)) { p2 = 0; } return p1 - p2; } }
/** * compute the ideal mapping for resource in Full-Auto and Semi-Auto based on its preference list */ public static Map<String, String> computeIdealMapping(List<String> preferenceList, StateModelDefinition stateModelDef, Set<String> liveAndEnabled) { Map<String, String> idealStateMap = new HashMap<String, String>(); if (preferenceList == null) { return idealStateMap; } List<String> statesPriorityList = stateModelDef.getStatesPriorityList(); Set<String> assigned = new HashSet<String>(); for (String state : statesPriorityList) { int stateCount = AbstractRebalancer.getStateCount(state, stateModelDef, liveAndEnabled.size(), preferenceList.size()); for (String instance : preferenceList) { if (stateCount <= 0) { break; } if (!assigned.contains(instance)) { idealStateMap.put(instance, state); assigned.add(instance); stateCount--; } } } return idealStateMap; }
/** * compute the ideal mapping for resource in Full-Auto and Semi-Auto based on its preference list */ public static Map<String, String> computeIdealMapping(List<String> preferenceList, StateModelDefinition stateModelDef, Set<String> liveAndEnabled) { Map<String, String> idealStateMap = new HashMap<String, String>(); if (preferenceList == null) { return idealStateMap; } List<String> statesPriorityList = stateModelDef.getStatesPriorityList(); Set<String> assigned = new HashSet<String>(); for (String state : statesPriorityList) { int stateCount = AbstractRebalancer.getStateCount(state, stateModelDef, liveAndEnabled.size(), preferenceList.size()); for (String instance : preferenceList) { if (stateCount <= 0) { break; } if (!assigned.contains(instance)) { idealStateMap.put(instance, state); assigned.add(instance); stateCount--; } } } return idealStateMap; }
List<String> statesPriorityList = getStatesPriorityList();
List<String> statesPriorityList = getStatesPriorityList();
Map<String, Bounds> stateConstraints = new HashMap<String, Bounds>(); List<String> statePriorityList = stateModelDefinition.getStatesPriorityList(); for (String state : statePriorityList) { String numInstancesPerState = stateModelDefinition.getNumInstancesPerState(state);
Map<String, Bounds> stateConstraints = new HashMap<String, Bounds>(); List<String> statePriorityList = stateModelDefinition.getStatesPriorityList(); for (String state : statePriorityList) { String numInstancesPerState = stateModelDefinition.getNumInstancesPerState(state);
List<String> statePriorityList = stateModDef.getStatesPriorityList();
List<String> statePriorityList = stateModDef.getStatesPriorityList();
private void validateMap(String resource, String partition, int replica, Map<String, String> instanceStateMap, StateModelDefinition stateModelDef) { if (instanceStateMap == null || instanceStateMap.isEmpty()) { _testSuccess = false; Assert.fail( String.format("Resource %s partition %s has no active replica!", resource, partition)); } if (instanceStateMap.size() < replica) { _testSuccess = false; Assert.fail(String .format("Resource %s partition %s has %d active replica, less than required %d!", resource, partition, instanceStateMap.size(), replica)); } Map<String, Integer> stateCountMap = stateModelDef.getStateCountMap(NUM_NODE, replica); String topState = stateModelDef.getStatesPriorityList().get(0); if (stateCountMap.get(topState) == 1) { int topCount = 0; for (String val : instanceStateMap.values()) { if (topState.equals(val)) { topCount++; } } if (topCount > 1) { _testSuccess = false; Assert.fail(String .format("Resource %s partition %s has %d replica in %s, more than 1!", resource, partition, topCount, topState)); } } }
StateModelDefinition stateModelDef = admin.getStateModelDef(clusterId, idealState.getStateModelDefRef()); String initialState = stateModelDef.getInitialState(); List<String> statesPriorityList = stateModelDef.getStatesPriorityList(); statesPriorityList = statesPriorityList.subList(0, statesPriorityList.indexOf(initialState)); // Trim stateList to initialState and above int minActiveReplicas = idealState.getMinActiveReplicas();
for (String state : STATE_MODEL.getStatesPriorityList()) { upperBounds.put(state, STATE_MODEL.getNumInstancesPerState(state));
StateModelDefinition stateModelDef = BuiltInStateModelDefinitions.valueOf(is.getStateModelDefRef()).getStateModelDefinition(); String topState = stateModelDef.getStatesPriorityList().get(0); int replica = Integer.valueOf(is.getReplicas());
@Override public boolean verify() { HelixDataAccessor accessor = new ZKHelixDataAccessor(_clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient)); Builder keyBuilder = accessor.keyBuilder(); int numberOfPartitions = accessor.getProperty(keyBuilder.idealStates(_resourceName)).getRecord().getListFields() .size(); ClusterDataCache cache = new ClusterDataCache(); cache.refresh(accessor); String masterValue = cache.getStateModelDef(cache.getIdealState(_resourceName).getStateModelDefRef()) .getStatesPriorityList().get(0); int replicas = Integer.parseInt(cache.getIdealState(_resourceName).getReplicas()); return verifyBalanceExternalView(accessor.getProperty(keyBuilder.externalView(_resourceName)) .getRecord(), numberOfPartitions, masterValue, replicas, cache.getLiveInstances().size(), cache.getIdealState(_resourceName).getMaxPartitionsPerInstance()); }
String masterValue = cache.getStateModelDef(cache.getIdealState(_resourceName).getStateModelDefRef()) .getStatesPriorityList().get(0); int replicas = Integer.parseInt(cache.getIdealState(_resourceName).getReplicas()); String instanceGroupTag = cache.getIdealState(_resourceName).getInstanceGroupTag();
cache.getStateModelDef(idealState.getStateModelDefRef()).getStatesPriorityList().get(0); int replicas = Integer.parseInt(cache.getIdealState(_resourceName).getReplicas()); String instanceGroupTag = cache.getIdealState(_resourceName).getInstanceGroupTag();