HADOOP-12479. ProtocMojo does not log the reason for a protoc compilation 
failure. Contributed by Chris Nauroth.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fdd74062
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fdd74062
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fdd74062

Branch: refs/heads/HDFS-7966
Commit: fdd740622459625efe5e12f37577aa3f5746177f
Parents: 5f3f0e0
Author: cnauroth <cnaur...@apache.org>
Authored: Thu Oct 15 15:54:48 2015 -0700
Committer: cnauroth <cnaur...@apache.org>
Committed: Thu Oct 15 15:54:48 2015 -0700

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt  |  3 +++
 .../hadoop/maven/plugin/protoc/ProtocMojo.java   |  6 +++++-
 .../apache/hadoop/maven/plugin/util/Exec.java    | 19 ++++++++++++++++++-
 3 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/fdd74062/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt 
b/hadoop-common-project/hadoop-common/CHANGES.txt
index e2e8dc5..4d0f8dc 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -1228,6 +1228,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-12475. Replace guava Cache with ConcurrentHashMap for caching
     Connection in ipc Client (Walter Su via sjlee)
 
+    HADOOP-12479. ProtocMojo does not log the reason for a protoc compilation
+    failure. (cnauroth)
+
   OPTIMIZATIONS
 
     HADOOP-12051. ProtobufRpcEngine.invoke() should use Exception.toString()

http://git-wip-us.apache.org/repos/asf/hadoop/blob/fdd74062/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java
----------------------------------------------------------------------
diff --git 
a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java
 
b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java
index b9be33e..0dcac0e 100644
--- 
a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java
+++ 
b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java
@@ -248,11 +248,15 @@ public class ProtocMojo extends AbstractMojo {
 
         exec = new Exec(this);
         out = new ArrayList<String>();
-        if (exec.run(command, out) != 0) {
+        List<String> err = new ArrayList<>();
+        if (exec.run(command, out, err) != 0) {
           getLog().error("protoc compiler error");
           for (String s : out) {
             getLog().error(s);
           }
+          for (String s : err) {
+            getLog().error(s);
+          }
           throw new MojoExecutionException("protoc failure");
         }
         // Write the new checksum file on success.

http://git-wip-us.apache.org/repos/asf/hadoop/blob/fdd74062/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java
----------------------------------------------------------------------
diff --git 
a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java
 
b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java
index 37dbc72..ce3543c 100644
--- 
a/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java
+++ 
b/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java
@@ -42,12 +42,26 @@ public class Exec {
   /**
    * Runs the specified command and saves each line of the command's output to
    * the given list.
-   * 
+   *
    * @param command List containing command and all arguments
    * @param output List in/out parameter to receive command output
    * @return int exit code of command
    */
   public int run(List<String> command, List<String> output) {
+    return this.run(command, output, null);
+  }
+
+  /**
+   * Runs the specified command and saves each line of the command's output to
+   * the given list and each line of the command's stderr to the other list.
+   *
+   * @param command List containing command and all arguments
+   * @param output List in/out parameter to receive command output
+   * @param errors List in/out parameter to receive command stderr
+   * @return int exit code of command
+   */
+  public int run(List<String> command, List<String> output,
+      List<String> errors) {
     int retCode = 1;
     ProcessBuilder pb = new ProcessBuilder(command);
     try {
@@ -66,6 +80,9 @@ public class Exec {
       stdOut.join();
       stdErr.join();
       output.addAll(stdOut.getOutput());
+      if (errors != null) {
+        errors.addAll(stdErr.getOutput());
+      }
     } catch (Exception ex) {
       mojo.getLog().warn(command + " failed: " + ex.toString());
     }

Reply via email to