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 om...@apache.org on 2008/03/26 19:51:31 UTC

svn commit: r641477 - in /hadoop/core/branches/branch-0.16: CHANGES.txt src/java/org/apache/hadoop/util/CopyFiles.java

Author: omalley
Date: Wed Mar 26 11:51:13 2008
New Revision: 641477

URL: http://svn.apache.org/viewvc?rev=641477&view=rev
Log:
Merge -r 641465:641466 from trunk to branch 0.16 to fix HADOOP-3056.

Modified:
    hadoop/core/branches/branch-0.16/CHANGES.txt
    hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/util/CopyFiles.java

Modified: hadoop/core/branches/branch-0.16/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/CHANGES.txt?rev=641477&r1=641476&r2=641477&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/CHANGES.txt (original)
+++ hadoop/core/branches/branch-0.16/CHANGES.txt Wed Mar 26 11:51:13 2008
@@ -39,6 +39,10 @@
     HADOOP-3027. Fixes a problem to do with adding a shutdown hook in
     FileSystem.  (Amareshwari Sriramadasu via ddas)
 
+    HADOOP-3056. Fix distcp when the target is an empty directory by
+    making sure the directory is created first. (cdouglas and acmurthy 
+    via omalley)
+
 Release 0.16.1 - 2008-03-13
 
   INCOMPATIBLE CHANGES

Modified: hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/util/CopyFiles.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/util/CopyFiles.java?rev=641477&r1=641476&r2=641477&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/util/CopyFiles.java (original)
+++ hadoop/core/branches/branch-0.16/src/java/org/apache/hadoop/util/CopyFiles.java Wed Mar 26 11:51:13 2008
@@ -142,6 +142,9 @@
       input.write(out);
       Text.writeString(out, output.toString());
     }
+    public String toString() {
+      return input.toString() + " : " + output.toString();
+    }
   }
 
   /**
@@ -338,6 +341,9 @@
             destFileSys.getFileStatus(absdst).isDir()) {
           throw new IOException(absdst + " is a directory");
         }
+        if (!destFileSys.mkdirs(absdst.getParent())) {
+          throw new IOException("Failed to craete parent dir: " + absdst.getParent());
+        }
         rename(destFileSys, tmpfile, absdst);
       }
 
@@ -354,7 +360,9 @@
         if (fs.exists(dst)) {
           fs.delete(dst);
         }
-        fs.rename(tmp, dst);
+        if (!fs.rename(tmp, dst)) {
+          throw new IOException();
+        }
       }
       catch(IOException cause) {
         IOException ioe = new IOException("Fail to rename tmp file (=" + tmp