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");