Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5641218F42 for ; Fri, 14 Aug 2015 10:54:16 +0000 (UTC) Received: (qmail 93153 invoked by uid 500); 14 Aug 2015 10:54:15 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 93082 invoked by uid 500); 14 Aug 2015 10:54:15 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 93061 invoked by uid 99); 14 Aug 2015 10:54:15 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 14 Aug 2015 10:54:15 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A1BDEE1810; Fri, 14 Aug 2015 10:54:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vinayakumarb@apache.org To: common-commits@hadoop.apache.org Date: Fri, 14 Aug 2015 10:54:17 -0000 Message-Id: In-Reply-To: <0e8188f9427546bfa5c0a42a5f7f5505@git.apache.org> References: <0e8188f9427546bfa5c0a42a5f7f5505@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [03/50] hadoop git commit: HDFS-8444. Erasure Coding: fix cannot rename a zone dir (Contributed by Walter Su) 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/2bfc2e69 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2bfc2e69 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2bfc2e69 Branch: refs/heads/HDFS-7285-REBASE Commit: 2bfc2e691c3e677be54f4bbd1a5b2c21667026ab Parents: 6712efe Author: Vinayakumar B Authored: Tue Jun 2 16:41:19 2015 +0530 Committer: Vinayakumar B Committed: Thu Aug 13 17:00:00 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/2bfc2e69/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/2bfc2e69/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/2bfc2e69/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");