@Override protected Map<String, String> getPartitionStateMap(CurrentState state) { return state.getPartitionStateMap(); } }
private void logSegmentsLoadingInfo() { InstanceDataManager instanceDataManager = _serverInstance.getInstanceDataManager(); if (instanceDataManager == null) { return; } HelixDataAccessor helixDataAccessor = _helixManager.getHelixDataAccessor(); Builder keyBuilder = helixDataAccessor.keyBuilder(); LiveInstance liveInstance = helixDataAccessor.getProperty(keyBuilder.liveInstance(_instanceId)); String sessionId = liveInstance.getSessionId(); List<String> tableNames = _helixAdmin.getResourcesInCluster(_helixClusterName); for (String tableName : tableNames) { PropertyKey currentStateKey = keyBuilder.currentState(_instanceId, sessionId, tableName); CurrentState currentState = helixDataAccessor.getProperty(currentStateKey); int numSegmentsLoaded = instanceDataManager.getAllSegmentsMetadata(tableName).size(); if (currentState != null && currentState.isValid()) { int numSegmentsToLoad = currentState.getPartitionStateMap().size(); LOGGER.info( "Segments are not fully loaded during server bootstrap, current progress: table: {}, segments loading progress [ {} / {} ]", tableName, numSegmentsLoaded, numSegmentsToLoad); } } }
} else { for (CurrentState currentState : instanceCurrentStates) { for (String state : currentState.getPartitionStateMap().values()) { if (beforeToggleStates.equals(state)) { toggleSucceed = false;
private int getNumSegmentsToLoad() { InstanceDataManager instanceDataManager = _serverInstance.getInstanceDataManager(); if (instanceDataManager == null) { return -1; } HelixDataAccessor helixDataAccessor = _helixManager.getHelixDataAccessor(); Builder keyBuilder = helixDataAccessor.keyBuilder(); int numSegmentsToLoad = 0; List<String> tableNames = _helixAdmin.getResourcesInCluster(_helixClusterName); for (String tableName : tableNames) { LiveInstance liveInstance = helixDataAccessor.getProperty(keyBuilder.liveInstance(_instanceId)); String sessionId = liveInstance.getSessionId(); PropertyKey currentStateKey = keyBuilder.currentState(_instanceId, sessionId, tableName); CurrentState currentState = helixDataAccessor.getProperty(currentStateKey); if (currentState != null && currentState.isValid()) { numSegmentsToLoad += currentState.getPartitionStateMap().size(); } } return numSegmentsToLoad; }
for (String partition : curState.getPartitionStateMap().keySet()) { long newEndTime = curState.getEndTime(partition); if (prevState == null || prevState.getEndTime(partition) < newEndTime) {
Map<String, String> stateMap = currentState.getPartitionStateMap();
Map<String, String> stateMap = currentState.getPartitionStateMap();
CurrentState currentState = currentStateMap.get(dbName); Assert.assertNotNull(currentState); Assert.assertEquals(currentState.getPartitionStateMap().size(), PARTITION_NUMBER); for (String partition : currentState.getPartitionStateMap().keySet()) { String state = currentState.getState(partition); Assert.assertEquals(state, expectedState,
accessor.getBaseDataAccessor().update(key.getPath(), updater, AccessOption.PERSISTENT); CurrentState currentState = accessor.getProperty(key); if (currentState.getPartitionStateMap().size() == 0) { accessor.getBaseDataAccessor().remove(key.getPath(), AccessOption.PERSISTENT); LOG.info(String.format("Remove current state for instance: %s, resource %s", instanceName,
accessor.getBaseDataAccessor().update(key.getPath(), updater, AccessOption.PERSISTENT); CurrentState currentState = accessor.getProperty(key); if (currentState.getPartitionStateMap().size() == 0) { accessor.getBaseDataAccessor().remove(key.getPath(), AccessOption.PERSISTENT); LOG.info(String.format("Remove current state for instance: %s, resource %s", instanceName,
@Override public boolean verify() throws Exception { PropertyKey.Builder keyBuilder = accessor.keyBuilder(); PropertyKey partitionStatusKey = keyBuilder.currentState(participant.getInstanceName(), participant.getSessionId(), resourceName); CurrentState currentState = accessor.getProperty(partitionStatusKey); return currentState != null && !currentState.getPartitionStateMap().isEmpty(); } }, timeout);
private void verifyP2PDisabled() { ClusterDataCache dataCache = new ClusterDataCache(CLUSTER_NAME); dataCache.refresh(_accessor); Map<String, LiveInstance> liveInstanceMap = dataCache.getLiveInstances(); for (LiveInstance instance : liveInstanceMap.values()) { Map<String, CurrentState> currentStateMap = dataCache.getCurrentState(instance.getInstanceName(), instance.getSessionId()); Assert.assertNotNull(currentStateMap); for (CurrentState currentState : currentStateMap.values()) { for (String partition : currentState.getPartitionStateMap().keySet()) { String state = currentState.getState(partition); if (state.equalsIgnoreCase("MASTER")) { String triggerHost = currentState.getTriggerHost(partition); Assert.assertEquals(triggerHost, _controllerName, state + " of " + partition + " on " + instance.getInstanceName() + " was triggered by " + triggerHost); } } } } }
private void verifyP2PEnabled(long startTime) { ClusterDataCache dataCache = new ClusterDataCache(CLUSTER_NAME); dataCache.refresh(_accessor); Map<String, LiveInstance> liveInstanceMap = dataCache.getLiveInstances(); for (LiveInstance instance : liveInstanceMap.values()) { Map<String, CurrentState> currentStateMap = dataCache.getCurrentState(instance.getInstanceName(), instance.getSessionId()); Assert.assertNotNull(currentStateMap); for (CurrentState currentState : currentStateMap.values()) { for (String partition : currentState.getPartitionStateMap().keySet()) { String state = currentState.getState(partition); long start = currentState.getStartTime(partition); if (state.equalsIgnoreCase("MASTER") && start > startTime) { String triggerHost = currentState.getTriggerHost(partition); if (!triggerHost.equals(_controllerName)) { p2pTrigged ++; } total ++; } } } } }
@Override public ZNRecord update(ZNRecord currentData) { CurrentState curState = null; if (currentData == null) { curState = new CurrentState(_lastCurState.getId()); // copy all simple fields settings and overwrite session-id to current session curState.getRecord().setSimpleFields(_lastCurState.getRecord().getSimpleFields()); curState.setSessionId(_curSessionId); } else { curState = new CurrentState(currentData); } for (String partitionName : _lastCurState.getPartitionStateMap().keySet()) { // carry-over only when current-state not exist if (curState.getState(partitionName) == null) { curState.setState(partitionName, _initState); } } return curState.getRecord(); }
@Override public ZNRecord update(ZNRecord currentData) { CurrentState curState = null; if (currentData == null) { curState = new CurrentState(_lastCurState.getId()); // copy all simple fields settings and overwrite session-id to current session curState.getRecord().setSimpleFields(_lastCurState.getRecord().getSimpleFields()); curState.setSessionId(_curSessionId); } else { curState = new CurrentState(currentData); } for (String partitionName : _lastCurState.getPartitionStateMap().keySet()) { // carry-over only when current-state not exist if (curState.getState(partitionName) == null) { curState.setState(partitionName, _initState); } } return curState.getRecord(); }
Map<String, String> partitionStateMap = currentState.getPartitionStateMap(); for (String partitionName : partitionStateMap.keySet()) { Partition partition = resource.getPartition(partitionName);
Map<String, String> partitionStateMap = currentState.getPartitionStateMap(); for (String partitionName : partitionStateMap.keySet()) { Partition partition = resource.getPartition(partitionName);
Map<String, String> partitionStateMap = cs.getPartitionStateMap(); Assert.assertEquals(partitionStateMap.size(), 1); Assert.assertEquals(partitionStateMap.keySet().iterator().next(), "TestDB0_4");
CurrentState currentState = accessor.getProperty(keyBuilder.currentState(participant, sessionId, _resourceName)); Map<String, String> partitionStateMap = currentState.getPartitionStateMap(); if (partitionStateMap != null && !partitionStateMap.isEmpty()) { LOG.error("Current state not empty for " + participant);
currentState.getStateModelDefRef()); AssertJUnit.assertEquals(resourceMap.get(oldResource).getPartitions().size(), currentState .getPartitionStateMap().size()); AssertJUnit.assertNotNull(resourceMap.get(oldResource).getPartition("testResourceOld_0")); AssertJUnit.assertNotNull(resourceMap.get(oldResource).getPartition("testResourceOld_1"));