diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NodesListManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NodesListManager.java index 1e8b98a..cbee67b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NodesListManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/NodesListManager.java @@ -131,10 +131,13 @@ public void refreshNodes(Configuration yarnConf) throws IOException, YarnException { refreshHostsReader(yarnConf); - for (NodeId nodeId: rmContext.getRMNodes().keySet()) { - if (!isValidNode(nodeId.getHost())) { + for (Entry entry : rmContext.getRMNodes().entrySet()) { + if (!isValidNode(entry.getKey().getHost())) { + this.rmContext.getDispatcher().getEventHandler().handle( + new RMNodeEvent(entry.getKey(), RMNodeEventType.DECOMMISSION)); + } else if (entry.getValue().getState() == NodeState.DECOMMISSIONED) { this.rmContext.getDispatcher().getEventHandler().handle( - new RMNodeEvent(nodeId, RMNodeEventType.DECOMMISSION)); + new RMNodeEvent(entry.getKey(), RMNodeEventType.RECOMMISSION)); } } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java index e0d27d6..1ab0c57 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java @@ -217,6 +217,9 @@ .addTransition(NodeState.DECOMMISSIONED, NodeState.DECOMMISSIONED, RMNodeEventType.FINISHED_CONTAINERS_PULLED_BY_AM, new AddContainersToBeRemovedFromNMTransition()) + .addTransition(NodeState.DECOMMISSIONED, NodeState.SHUTDOWN, + RMNodeEventType.RECOMMISSION, + new RecommissionNodeTransition(NodeState.SHUTDOWN)) //Transitions from DECOMMISSIONING state .addTransition(NodeState.DECOMMISSIONING, NodeState.DECOMMISSIONED, @@ -982,8 +985,8 @@ public RecommissionNodeTransition(NodeState finalState) { @Override public void transition(RMNodeImpl rmNode, RMNodeEvent event) { - LOG.info("Node " + rmNode.nodeId + " in DECOMMISSIONING is " + - "recommissioned back to RUNNING."); + LOG.info("Node " + rmNode.nodeId + " in " + rmNode.getState() + " is " + + "recommissioned back to " + finalState + "."); // TODO handle NM resource resume in YARN-3223. } }