diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java 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 f9bfc7e..7823c03 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmnode/RMNodeImpl.java @@ -141,6 +141,12 @@ .addTransition(NodeState.NEW, NodeState.NEW, RMNodeEventType.RESOURCE_UPDATE, new UpdateNodeResourceWhenUnusableTransition()) + //Invalid transitions from NEW state + .addTransition(NodeState.NEW, NodeState.NEW, + EnumSet.of(RMNodeEventType.CLEANUP_APP, RMNodeEventType + .CLEANUP_CONTAINER, RMNodeEventType.CONTAINER_ALLOCATED, + RMNodeEventType.DECOMMISSION, RMNodeEventType.EXPIRE), + new IgnoreFromNewTransition()) //Transitions from RUNNING state .addTransition(NodeState.RUNNING, @@ -708,6 +714,16 @@ public void transition(RMNodeImpl rmNode, RMNodeEvent event) { } } + public static class IgnoreFromNewTransition + implements SingleArcTransition { + + @Override + public void transition(RMNodeImpl rmNode, RMNodeEvent rmNodeEvent) { + LOG.debug("Invalid transition " + rmNodeEvent.getType() + + " from " + NodeState.NEW + ". Ignoring!"); + } + } + public static class StatusUpdateWhenHealthyTransition implements MultipleArcTransition { @Override