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

(cherry picked from commit 6b0f813e89)
This commit is contained in:
Jason Lowe 2016-02-26 20:24:50 +00:00
parent 49a10a3cec
commit 0bd7ba4ea8
4 changed files with 23 additions and 11 deletions

View File

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

View File

@ -166,17 +166,8 @@ public class NodesListManager extends CompositeService implements
UnknownNodeId nodeId = new UnknownNodeId(host); UnknownNodeId nodeId = new UnknownNodeId(host);
RMNodeImpl rmNode = new RMNodeImpl(nodeId, RMNodeImpl rmNode = new RMNodeImpl(nodeId,
rmContext, host, -1, -1, new UnknownNode(host), null, null); rmContext, host, -1, -1, new UnknownNode(host), null, null);
rmContext.getInactiveRMNodes().put(nodeId, rmNode);
RMNode prevRMNode = rmNode.handle(new RMNodeEvent(nodeId, RMNodeEventType.DECOMMISSION));
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));
}
} }
} }

View File

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

View File

@ -688,6 +688,20 @@ public class TestRMNodeTransitions {
Assert.assertEquals(0, node.getRunningApps().size()); 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() { private RMNodeImpl getRunningNode() {
return getRunningNode(null, 0); return getRunningNode(null, 0);
} }