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 vi...@apache.org on 2015/06/02 13:12:37 UTC

hadoop git commit: HDFS-8444. Erasure Coding: fix cannot rename a zone dir (Contributed by Walter Su)

Repository: hadoop
Updated Branches:
  refs/heads/HDFS-7285 9b54e66f3 -> 2d847e7d6


HDFS-8444. Erasure Coding: fix cannot rename a zone dir (Contributed by Walter Su)


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

Branch: refs/heads/HDFS-7285
Commit: 2d847e7d620f97ebe8e9297361e2541d7d0ecd50
Parents: 9b54e66
Author: Vinayakumar B <vi...@apache.org>
Authored: Tue Jun 2 16:41:19 2015 +0530
Committer: Vinayakumar B <vi...@apache.org>
Committed: Tue Jun 2 16:41:19 2015 +0530

----------------------------------------------------------------------
 .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt        |  3 +++
 .../namenode/ErasureCodingZoneManager.java      |  9 +++++++--
 .../hadoop/hdfs/TestErasureCodingZones.java     | 21 ++++++++++++--------
 3 files changed, 23 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d847e7d/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt
index e7335b2..c3c55c7 100755
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt
@@ -268,3 +268,6 @@
 
     HDFS-8336. Expose some administrative erasure coding operations to HdfsAdmin
     (Uma Maheswara Rao G via vinayakumarb)
+
+    HDFS-8444. Erasure Coding: fix cannot rename a zone dir
+    (Walter Su via vinayakumarb)

http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d847e7d/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ErasureCodingZoneManager.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ErasureCodingZoneManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ErasureCodingZoneManager.java
index 4b3e747..e853829 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ErasureCodingZoneManager.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ErasureCodingZoneManager.java
@@ -153,8 +153,13 @@ public class ErasureCodingZoneManager {
   void checkMoveValidity(INodesInPath srcIIP, INodesInPath dstIIP, String src)
       throws IOException {
     assert dir.hasReadLock();
-    final ECSchema srcSchema = getECSchema(srcIIP);
-    final ECSchema dstSchema = getECSchema(dstIIP);
+    final ErasureCodingZone srcZone = getECZone(srcIIP);
+    final ErasureCodingZone dstZone = getECZone(dstIIP);
+    if (srcZone != null && srcZone.getDir().equals(src) && dstZone == null) {
+      return;
+    }
+    final ECSchema srcSchema = (srcZone != null) ? srcZone.getSchema() : null;
+    final ECSchema dstSchema = (dstZone != null) ? dstZone.getSchema() : null;
     if ((srcSchema != null && !srcSchema.equals(dstSchema)) ||
         (dstSchema != null && !dstSchema.equals(srcSchema))) {
       throw new IOException(

http://git-wip-us.apache.org/repos/asf/hadoop/blob/2d847e7d/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingZones.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingZones.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingZones.java
index d724b53..1a10ebf 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingZones.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestErasureCodingZones.java
@@ -119,15 +119,20 @@ public class TestErasureCodingZones {
     final Path srcFile = new Path(srcECDir, "foo");
     fs.create(srcFile);
 
-    /* Verify that a file can be moved between 2 EC zones */
-    try {
-      fs.rename(srcFile, dstECDir);
-    } catch (IOException e) {
-      fail("A file should be able to move between 2 EC zones " + e);
-    }
+    // Test move dir
+    // Move EC dir under non-EC dir
+    final Path newDir = new Path("/srcEC_new");
+    fs.rename(srcECDir, newDir);
+    fs.rename(newDir, srcECDir); // move back
+
+    // Move EC dir under another EC dir
+    fs.rename(srcECDir, dstECDir);
+    fs.rename(new Path("/dstEC/srcEC"), srcECDir); // move back
 
-    // Move the file back
-    fs.rename(new Path(dstECDir, "foo"), srcECDir);
+    // Test move file
+    /* Verify that a file can be moved between 2 EC zones */
+    fs.rename(srcFile, dstECDir);
+    fs.rename(new Path(dstECDir, "foo"), srcECDir); // move back
 
     /* Verify that a file cannot be moved from a non-EC dir to an EC zone */
     final Path nonECDir = new Path("/nonEC");