浏览代码

svn merge -c 1491914 FIXES: MAPREDUCE-5315. DistCp reports success even on failure. (mithun and jlowe via daryn)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2.1-beta@1491919 13f79535-47bb-0310-9956-ffa450edef68
Daryn Sharp 12 年之前
父节点
当前提交
399d512074

+ 6 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -368,6 +368,9 @@ Release 2.1.0-beta - UNRELEASED
     MAPREDUCE-5308. Shuffling to memory can get out-of-sync when fetching
     MAPREDUCE-5308. Shuffling to memory can get out-of-sync when fetching
     multiple compressed map outputs (Nathan Roberts via jlowe)
     multiple compressed map outputs (Nathan Roberts via jlowe)
 
 
+    MAPREDUCE-5315.  DistCp reports success even on failure. (mithun and jlowe
+    via daryn)
+
   BREAKDOWN OF HADOOP-8562 SUBTASKS
   BREAKDOWN OF HADOOP-8562 SUBTASKS
 
 
     MAPREDUCE-4739. Some MapReduce tests fail to find winutils.
     MAPREDUCE-4739. Some MapReduce tests fail to find winutils.
@@ -986,6 +989,9 @@ Release 0.23.9 - UNRELEASED
     MAPREDUCE-5308. Shuffling to memory can get out-of-sync when fetching
     MAPREDUCE-5308. Shuffling to memory can get out-of-sync when fetching
     multiple compressed map outputs (Nathan Roberts via jlowe)
     multiple compressed map outputs (Nathan Roberts via jlowe)
 
 
+    MAPREDUCE-5315.  DistCp reports success even on failure. (mithun and jlowe
+    via daryn)
+
 Release 0.23.8 - 2013-06-05
 Release 0.23.8 - 2013-06-05
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 3 - 2
hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java

@@ -162,8 +162,9 @@ public class DistCp extends Configured implements Tool {
     job.getConfiguration().set(DistCpConstants.CONF_LABEL_DISTCP_JOB_ID, jobID);
     job.getConfiguration().set(DistCpConstants.CONF_LABEL_DISTCP_JOB_ID, jobID);
     
     
     LOG.info("DistCp job-id: " + jobID);
     LOG.info("DistCp job-id: " + jobID);
-    if (inputOptions.shouldBlock()) {
-      job.waitForCompletion(true);
+    if (inputOptions.shouldBlock() && !job.waitForCompletion(true)) {
+      throw new IOException("DistCp failure: Job " + jobID + " has failed: "
+          + job.getStatus().getFailureInfo());
     }
     }
     return job;
     return job;
   }
   }