diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java index 9e2e111..3a9b216 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java @@ -18,6 +18,7 @@ package org.apache.hadoop.yarn.server.nodemanager; +import com.google.common.base.Optional; import static org.apache.hadoop.fs.CreateFlag.CREATE; import static org.apache.hadoop.fs.CreateFlag.OVERWRITE; @@ -213,9 +214,18 @@ public int launchContainer(Container container, LOG.warn("Exception from container-launch with container ID: " + containerId + " and exit code: " + exitCode , e); logOutput(shExec.getOutput()); - String diagnostics = "Exception from container-launch: " - + e + "\n" - + StringUtils.stringifyException(e) + "\n" + shExec.getOutput(); + logOutput(e.getMessage()); + + StringBuilder builder = new StringBuilder(); + builder.append("Exception from container-launch: \n"); + builder.append(StringUtils.stringifyException(e) + "\n"); + builder.append( + Optional.fromNullable(shExec.getOutput()) + .or("No output from stdio") + "\n"); + builder.append( + Optional.fromNullable(e.getMessage()) + .or("No output from stderr") + "\n"); + String diagnostics = builder.toString(); container.handle(new ContainerDiagnosticsUpdateEvent(containerId, diagnostics)); } else { diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java index cbdcb13..7b2fbc3 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LinuxContainerExecutor.java @@ -18,6 +18,7 @@ package org.apache.hadoop.yarn.server.nodemanager; +import com.google.common.base.Optional; import java.io.File; import java.io.IOException; import java.net.InetSocketAddress; @@ -227,8 +228,8 @@ public void startLocalizer(Path nmPrivateContainerTokensPath, } } catch (ExitCodeException e) { int exitCode = shExec.getExitCode(); - LOG.warn("Exit code from container " + locId + " startLocalizer is : " - + exitCode, e); + LOG.warn("Exit code from container " + locId + " startLocalizer is : " + + exitCode, e); logOutput(shExec.getOutput()); throw new IOException("Application " + appId + " initialization failed" + " (exitCode=" + exitCode + ") with output: " + shExec.getOutput(), e); @@ -297,8 +298,18 @@ public int launchContainer(Container container, LOG.warn("Exception from container-launch with container ID: " + containerId + " and exit code: " + exitCode , e); logOutput(shExec.getOutput()); - String diagnostics = "Exception from container-launch: \n" - + StringUtils.stringifyException(e) + "\n" + shExec.getOutput(); + logOutput(e.getMessage()); + + StringBuilder builder = new StringBuilder(); + builder.append("Exception from container-launch: \n"); + builder.append(StringUtils.stringifyException(e) + "\n"); + builder.append( + Optional.fromNullable(shExec.getOutput()) + .or("No output from stdio") + "\n"); + builder.append( + Optional.fromNullable(e.getMessage()) + .or("No output from stderr") + "\n"); + String diagnostics = builder.toString(); container.handle(new ContainerDiagnosticsUpdateEvent(containerId, diagnostics)); } else {