diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java index bf34837..1667575 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java @@ -991,7 +991,7 @@ protected Node getNMInNodeSet(NodeId nodeId, Map map, } } - private Set getLabelsInfoByNode(NodeId nodeId) { + protected Set getLabelsInfoByNode(NodeId nodeId) { Set labels = getLabelsByNode(nodeId, nodeCollections); if (labels.isEmpty()) { return EMPTY_NODELABEL_SET; diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java index 696b99b..17d73d1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java @@ -34,6 +34,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.yarn.api.records.NodeId; +import org.apache.hadoop.yarn.api.records.NodeLabel; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager; import org.apache.hadoop.yarn.nodelabels.RMNodeLabel; @@ -318,6 +319,16 @@ public Resource getQueueResource(String queueName, Set queueLabels, } } + public Set getLabelsInfoOnNode(NodeId nodeId) { + try { + readLock.lock(); + Set nodeLabels = getLabelsInfoByNode(nodeId); + return Collections.unmodifiableSet(nodeLabels); + } finally { + readLock.unlock(); + } + } + public boolean containsNodeLabel(String label) { try { readLock.lock(); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index c39f2b9..8d37296 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -810,12 +810,12 @@ public NodeToLabelsInfo getNodeToLabels(@Context HttpServletRequest hsr) NodeToLabelsInfo ntl = new NodeToLabelsInfo(); HashMap ntlMap = ntl.getNodeToLabels(); - Map> nodeIdToLabels = rm.getRMContext() - .getNodeLabelManager().getNodeLabels(); + Map> nodeIdToLabels = rm.getRMContext() + .getNodeLabelManager().getNodeLabelsInfo(); - for (Map.Entry> nitle : nodeIdToLabels.entrySet()) { - ntlMap.put(nitle.getKey().toString(), - new NodeLabelsInfo(nitle.getValue())); + for (Map.Entry> nitle : nodeIdToLabels.entrySet()) { + List labels = new ArrayList(nitle.getValue()); + ntlMap.put(nitle.getKey().toString(), new NodeLabelsInfo(labels)); } return ntl; @@ -830,16 +830,16 @@ public LabelsToNodesInfo getLabelsToNodes( LabelsToNodesInfo lts = new LabelsToNodesInfo(); Map ltsMap = lts.getLabelsToNodes(); - Map> labelsToNodeId = null; + Map> labelsToNodeId = null; if (labels == null || labels.size() == 0) { labelsToNodeId = - rm.getRMContext().getNodeLabelManager().getLabelsToNodes(); + rm.getRMContext().getNodeLabelManager().getLabelsInfoToNodes(); } else { labelsToNodeId = - rm.getRMContext().getNodeLabelManager().getLabelsToNodes(labels); + rm.getRMContext().getNodeLabelManager().getLabelsInfoToNodes(labels); } - for (Entry> entry : labelsToNodeId.entrySet()) { + for (Entry> entry : labelsToNodeId.entrySet()) { List nodeIdStrList = new ArrayList(); for (NodeId nodeId : entry.getValue()) { nodeIdStrList.add(nodeId.toString()); @@ -985,14 +985,13 @@ public Response removeFromCluserNodeLabels( @Path("/nodes/{nodeId}/get-labels") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) public NodeLabelsInfo getLabelsOnNode(@Context HttpServletRequest hsr, - @PathParam("nodeId") String nodeId) - throws IOException { + @PathParam("nodeId") String nodeId) throws IOException { init(); NodeId nid = ConverterUtils.toNodeIdWithDefaultPort(nodeId); - return new NodeLabelsInfo( - rm.getRMContext().getNodeLabelManager().getLabelsOnNode(nid)); - + List labels = new ArrayList(rm.getRMContext() + .getNodeLabelManager().getLabelsInfoOnNode(nid)); + return new NodeLabelsInfo(labels); } protected Response killApp(RMApp app, UserGroupInformation callerUGI, diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodeLabels.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodeLabels.java index 54fe00d..beb8362 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodeLabels.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesNodeLabels.java @@ -303,7 +303,7 @@ public void testNodeLabels() throws JSONException, Exception { .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class); assertEquals(MediaType.APPLICATION_JSON_TYPE, response.getType()); nlsifo = response.getEntity(NodeLabelsInfo.class); - assertTrue(nlsifo.getNodeLabelsName().contains("")); + assertTrue(nlsifo.getNodeLabelsName().isEmpty()); // Add a label back for auth tests params = new MultivaluedMapImpl(); -- 1.9.4.msysgit.1