You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cd...@apache.org on 2009/05/05 02:41:44 UTC

svn commit: r771510 - in /hadoop/core/trunk: CHANGES.txt src/tools/org/apache/hadoop/tools/DistCp.java

Author: cdouglas
Date: Tue May  5 00:41:43 2009
New Revision: 771510

URL: http://svn.apache.org/viewvc?rev=771510&view=rev
Log:
HADOOP-5675. Do not launch a job if DistCp has no work to do. Contributed by Tsz Wo (Nicholas), SZE

Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/src/tools/org/apache/hadoop/tools/DistCp.java

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=771510&r1=771509&r2=771510&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Tue May  5 00:41:43 2009
@@ -300,6 +300,9 @@
 
     HADOOP-5596. Add EnumSetWritable. (He Yongqiang via szetszwo)
 
+    HADOOP-5675. Do not launch a job if DistCp has no work to do. (Tsz Wo
+    (Nicholas), SZE via cdouglas)
+
   OPTIMIZATIONS
 
     HADOOP-5595. NameNode does not need to run a replicator to choose a

Modified: hadoop/core/trunk/src/tools/org/apache/hadoop/tools/DistCp.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/tools/org/apache/hadoop/tools/DistCp.java?rev=771510&r1=771509&r2=771510&view=diff
==============================================================================
--- hadoop/core/trunk/src/tools/org/apache/hadoop/tools/DistCp.java (original)
+++ hadoop/core/trunk/src/tools/org/apache/hadoop/tools/DistCp.java Tue May  5 00:41:43 2009
@@ -647,8 +647,9 @@
     
     //Initialize the mapper
     try {
-      setup(conf, job, args);
-      JobClient.runJob(job);
+      if (setup(conf, job, args)) {
+        JobClient.runJob(job);
+      }
       finalize(conf, job, args.dst, args.preservedAttributes);
     } finally {
       //delete tmp
@@ -968,8 +969,9 @@
    * @param conf : The dfs/mapred configuration.
    * @param jobConf : The handle to the jobConf object to be initialized.
    * @param args Arguments
+   * @return true if it is necessary to launch a job.
    */
-  private static void setup(Configuration conf, JobConf jobConf,
+  private static boolean setup(Configuration conf, JobConf jobConf,
                             final Arguments args)
       throws IOException {
     jobConf.set(DST_DIR_LABEL, args.dst.toUri().toString());
@@ -1139,10 +1141,12 @@
         (dstExists && !dstIsDir) || (!dstExists && srcCount == 1)?
         args.dst.getParent(): args.dst, "_distcp_tmp_" + randomId);
     jobConf.set(TMP_DIR_LABEL, tmpDir.toUri().toString());
-    LOG.info("srcCount=" + srcCount);
+    LOG.info("srcCount = " + srcCount);
+    LOG.info("byteCount= " + StringUtils.humanReadableInt(byteCount));
     jobConf.setInt(SRC_COUNT_LABEL, srcCount);
     jobConf.setLong(TOTAL_SIZE_LABEL, byteCount);
     setMapCount(byteCount, jobConf);
+    return byteCount > 0;
   }
 
   /**