From fb9c1519b30cf8113cf9b8deed9b9901db5e9693 Mon Sep 17 00:00:00 2001 From: Varun Vasudev Date: Wed, 14 Oct 2015 15:18:08 +0530 Subject: [PATCH] YARN-4252. Log container-executor invocation details when exit code is non-zero. Contributed by Sidharta Seethana. --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../linux/privileged/PrivilegedOperationExecutor.java | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 99325439a4..2aac433dc7 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -501,6 +501,9 @@ Release 2.8.0 - UNRELEASED YARN-3943. Use separate threshold configurations for disk-full detection and disk-not-full detection. (Zhihai Xu via jlowe) + YARN-4252. Log container-executor invocation details when exit code is non-zero. + (Sidharta Seethana via vvasudev) + OPTIMIZATIONS YARN-3339. TestDockerContainerExecutor should pull a single image and not 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/linux/privileged/PrivilegedOperationExecutor.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/privileged/PrivilegedOperationExecutor.java index 1d71938ba2..4b1bb9f270 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/privileged/PrivilegedOperationExecutor.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/privileged/PrivilegedOperationExecutor.java @@ -155,12 +155,17 @@ public String executePrivilegedOperation(List prefixCommands, LOG.debug(exec.getOutput()); } } catch (ExitCodeException e) { - String logLine = new StringBuffer("Shell execution returned exit code: ") + StringBuilder logBuilder = new StringBuilder("Shell execution returned " + + "exit code: ") .append(exec.getExitCode()) .append(". Privileged Execution Operation Output: ") - .append(System.lineSeparator()).append(exec.getOutput()).toString(); + .append(System.lineSeparator()).append(exec.getOutput()); - LOG.warn(logLine); + logBuilder.append("Full command array for failed execution: ") + .append(System.lineSeparator()); + logBuilder.append(Arrays.toString(fullCommandArray)); + + LOG.warn(logBuilder.toString()); //stderr from shell executor seems to be stuffed into the exception //'message' - so, we have to extract it and set it as the error out