diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java index 8ad9784fc40..d7ed9f670eb 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/container/ContainerImpl.java @@ -1821,6 +1821,7 @@ public void transition(ContainerImpl container, container.dispatcher.getEventHandler().handle( new ContainerSchedulerEvent(container, ContainerSchedulerEventType.CONTAINER_COMPLETED)); + container.clearRecoveredStatus(); container.sendScheduleEvent(); } } @@ -2208,6 +2209,12 @@ private boolean hasDefaultExitCode() { return (this.exitCode == ContainerExitStatus.INVALID); } + public void clearRecoveredStatus() { + LOG.info("Clear recovered status container " + + this.containerId.toString()); + this.recoveredStatus = RecoveredContainerStatus.REQUESTED; + } + /** * Returns whether the specific resource should be uploaded to the shared * cache. diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/RecoveredContainerLaunch.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/RecoveredContainerLaunch.java index 17ddd77857f..3347d11b9a2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/RecoveredContainerLaunch.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/RecoveredContainerLaunch.java @@ -108,21 +108,8 @@ public Integer call() { } } - if (retCode != 0) { - LOG.warn("Recovered container exited with a non-zero exit code " - + retCode); - this.dispatcher.getEventHandler().handle(new ContainerExitEvent( - containerId, - ContainerEventType.CONTAINER_EXITED_WITH_FAILURE, retCode, - "Container exited with a non-zero exit code " + retCode)); - return retCode; - } - - LOG.info("Recovered container " + containerId + " succeeded"); - dispatcher.getEventHandler().handle( - new ContainerEvent(containerId, - ContainerEventType.CONTAINER_EXITED_WITH_SUCCESS)); - return 0; + handleContainerExitCode(retCode, new Path(container.getLogDir())); + return retCode; } private File locatePidFile(String appIdStr, String containerIdStr) {