@GET @Path("{instanceName}/resources/{resourceName}") public Response getResourceOnInstance(@PathParam("clusterId") String clusterId, @PathParam("instanceName") String instanceName, @PathParam("resourceName") String resourceName) throws IOException { HelixDataAccessor accessor = getDataAccssor(clusterId); List<String> sessionIds = accessor.getChildNames(accessor.keyBuilder().sessions(instanceName)); if (sessionIds == null || sessionIds.size() == 0) { return notFound(); } // Only get resource list from current session id String currentSessionId = sessionIds.get(0); CurrentState resourceCurrentState = accessor .getProperty(accessor.keyBuilder().currentState(instanceName, currentSessionId, resourceName)); if (resourceCurrentState != null) { return JSONRepresentation(resourceCurrentState.getRecord()); } return notFound(); }
@GET @Path("{instanceName}/resources") public Response getResourcesOnInstance(@PathParam("clusterId") String clusterId, @PathParam("instanceName") String instanceName) throws IOException { HelixDataAccessor accessor = getDataAccssor(clusterId); ObjectNode root = JsonNodeFactory.instance.objectNode(); root.put(Properties.id.name(), instanceName); ArrayNode resourcesNode = root.putArray(InstanceProperties.resources.name()); List<String> sessionIds = accessor.getChildNames(accessor.keyBuilder().sessions(instanceName)); if (sessionIds == null || sessionIds.size() == 0) { return null; } // Only get resource list from current session id String currentSessionId = sessionIds.get(0); List<String> resources = accessor.getChildNames(accessor.keyBuilder().currentStates(instanceName, currentSessionId)); if (resources != null && resources.size() > 0) { resourcesNode.addAll((ArrayNode) OBJECT_MAPPER.valueToTree(resources)); } return JSONRepresentation(root); }
List<String> sessions = accessor.getChildNames(keyBuilder.sessions(instanceName)); for (String session : sessions) { if (sessionID != null && !session.equals(sessionID)) {
List<String> sessions = _dataAccessor.getChildNames(_keyBuilder.sessions(_instanceName));
List<String> sessions = _dataAccessor.getChildNames(_keyBuilder.sessions(_instanceName));
List<String> sessions = accessor.getChildNames(keyBuilder.sessions(instanceName)); for (String session : sessions) { if (sessionID != null && !session.equals(sessionID)) {
List<String> sessionIds = accessor.getChildNames(keyBuilder.sessions(participant)); for (String sessionId : sessionIds) { CurrentState currentState =
public static boolean verifyEmptyCurStateAndExtView(String clusterName, String resourceName, Set<String> instanceNames, String zkAddr) { HelixZkClient zkClient = SharedZkClientFactory.getInstance() .buildZkClient(new HelixZkClient.ZkConnectionConfig(zkAddr)); zkClient.setZkSerializer(new ZNRecordSerializer()); try { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient)); Builder keyBuilder = accessor.keyBuilder(); for (String instanceName : instanceNames) { List<String> sessionIds = accessor.getChildNames(keyBuilder.sessions(instanceName)); for (String sessionId : sessionIds) { CurrentState curState = accessor.getProperty(keyBuilder.currentState(instanceName, sessionId, resourceName)); if (curState != null && curState.getRecord().getMapFields().size() != 0) { return false; } } ExternalView extView = accessor.getProperty(keyBuilder.externalView(resourceName)); if (extView != null && extView.getRecord().getMapFields().size() != 0) { return false; } } return true; } finally { zkClient.close(); } }