|
@@ -48,7 +48,6 @@ import org.apache.hadoop.yarn.event.Dispatcher;
|
|
import org.apache.hadoop.yarn.event.EventHandler;
|
|
import org.apache.hadoop.yarn.event.EventHandler;
|
|
import org.apache.hadoop.yarn.security.ContainerTokenIdentifier;
|
|
import org.apache.hadoop.yarn.security.ContainerTokenIdentifier;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NMContainerStatus;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NMContainerStatus;
|
|
-import org.apache.hadoop.yarn.server.nodemanager.ContainerExecutor.ExitCode;
|
|
|
|
import org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger;
|
|
import org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger;
|
|
import org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger.AuditConstants;
|
|
import org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger.AuditConstants;
|
|
import org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServicesEvent;
|
|
import org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServicesEvent;
|
|
@@ -773,7 +772,7 @@ public class ContainerImpl implements Container {
|
|
container.cleanup();
|
|
container.cleanup();
|
|
container.metrics.endInitingContainer();
|
|
container.metrics.endInitingContainer();
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
- container.exitCode = ExitCode.TERMINATED.getExitCode();
|
|
|
|
|
|
+ container.exitCode = killEvent.getContainerExitStatus();
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
container.diagnostics.append("Container is killed before being launched.\n");
|
|
container.diagnostics.append("Container is killed before being launched.\n");
|
|
}
|
|
}
|
|
@@ -817,6 +816,7 @@ public class ContainerImpl implements Container {
|
|
ContainersLauncherEventType.CLEANUP_CONTAINER));
|
|
ContainersLauncherEventType.CLEANUP_CONTAINER));
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
|
|
+ container.exitCode = killEvent.getContainerExitStatus();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -829,7 +829,10 @@ public class ContainerImpl implements Container {
|
|
@Override
|
|
@Override
|
|
public void transition(ContainerImpl container, ContainerEvent event) {
|
|
public void transition(ContainerImpl container, ContainerEvent event) {
|
|
ContainerExitEvent exitEvent = (ContainerExitEvent) event;
|
|
ContainerExitEvent exitEvent = (ContainerExitEvent) event;
|
|
- container.exitCode = exitEvent.getExitCode();
|
|
|
|
|
|
+ if (container.hasDefaultExitCode()) {
|
|
|
|
+ container.exitCode = exitEvent.getExitCode();
|
|
|
|
+ }
|
|
|
|
+
|
|
if (exitEvent.getDiagnosticInfo() != null) {
|
|
if (exitEvent.getDiagnosticInfo() != null) {
|
|
container.diagnostics.append(exitEvent.getDiagnosticInfo())
|
|
container.diagnostics.append(exitEvent.getDiagnosticInfo())
|
|
.append('\n');
|
|
.append('\n');
|
|
@@ -871,7 +874,7 @@ public class ContainerImpl implements Container {
|
|
@Override
|
|
@Override
|
|
public void transition(ContainerImpl container, ContainerEvent event) {
|
|
public void transition(ContainerImpl container, ContainerEvent event) {
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
ContainerKillEvent killEvent = (ContainerKillEvent) event;
|
|
- container.exitCode = ExitCode.TERMINATED.getExitCode();
|
|
|
|
|
|
+ container.exitCode = killEvent.getContainerExitStatus();
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
container.diagnostics.append(killEvent.getDiagnostic()).append("\n");
|
|
container.diagnostics.append("Container is killed before being launched.\n");
|
|
container.diagnostics.append("Container is killed before being launched.\n");
|
|
super.transition(container, event);
|
|
super.transition(container, event);
|
|
@@ -928,4 +931,9 @@ public class ContainerImpl implements Container {
|
|
this.readLock.unlock();
|
|
this.readLock.unlock();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private boolean hasDefaultExitCode() {
|
|
|
|
+ return (this.exitCode == ContainerExitStatus.INVALID);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|