YARN-4723. NodesListManager$UnknownNodeId ClassCastException. Contributed by Kuhu Shukla

This commit is contained in:
Jason Lowe 2016-02-26 20:24:50 +00:00
parent 2093acf6b6
commit 6b0f813e89
4 changed files with 23 additions and 11 deletions

View File

@ -1559,6 +1559,9 @@ Release 2.7.3 - UNRELEASED
YARN-2046. Out of band heartbeats are sent only on container kill and
possibly too early (Ming Ma via jlowe)
YARN-4723. NodesListManager$UnknownNodeId ClassCastException (Kuhu Shukla
via jlowe)
Release 2.7.2 - 2016-01-25
INCOMPATIBLE CHANGES

View File

@ -166,17 +166,8 @@ private void setDecomissionedNMs() {
UnknownNodeId nodeId = new UnknownNodeId(host);
RMNodeImpl rmNode = new RMNodeImpl(nodeId,
rmContext, host, -1, -1, new UnknownNode(host), null, null);
RMNode prevRMNode =
rmContext.getRMNodes().putIfAbsent(nodeId, rmNode);
if (prevRMNode != null) {
this.rmContext.getDispatcher().getEventHandler().handle(
new RMNodeEvent(prevRMNode.getNodeID(),
RMNodeEventType.DECOMMISSION));
} else {
this.rmContext.getDispatcher().getEventHandler().handle(
new RMNodeEvent(nodeId, RMNodeEventType.DECOMMISSION));
}
rmContext.getInactiveRMNodes().put(nodeId, rmNode);
rmNode.handle(new RMNodeEvent(nodeId, RMNodeEventType.DECOMMISSION));
}
}

View File

@ -1017,6 +1017,10 @@ public void transition(RMNodeImpl rmNode, RMNodeEvent event) {
*/
public static void deactivateNode(RMNodeImpl rmNode, NodeState finalState) {
if (rmNode.getNodeID().getPort() == -1) {
rmNode.updateMetricsForDeactivatedNode(rmNode.getState(), finalState);
return;
}
reportNodeUnusable(rmNode, finalState);
// Deactivate the node

View File

@ -688,6 +688,20 @@ public void testUpdateHeartbeatResponseForAppLifeCycle() {
Assert.assertEquals(0, node.getRunningApps().size());
}
@Test
public void testUnknownNodeId() {
NodesListManager.UnknownNodeId nodeId =
new NodesListManager.UnknownNodeId("host1");
RMNodeImpl node =
new RMNodeImpl(nodeId, rmContext, null, 0, 0, null, null, null);
rmContext.getInactiveRMNodes().putIfAbsent(nodeId,node);
node.handle(
new RMNodeEvent(node.getNodeID(), RMNodeEventType.DECOMMISSION));
Assert.assertNull(
"Must be null as there is no NODE_UNUSABLE update",
nodesListManagerEvent);
}
private RMNodeImpl getRunningNode() {
return getRunningNode(null, 0);
}