HDFS-12569. Unset EC policy logs empty payload in edit log. (Lei (Eddy) Xu)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/27ffd43b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/27ffd43b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/27ffd43b Branch: refs/heads/HDFS-9806 Commit: 27ffd43b6419c9ebe697536bcb6abb858ce791d2 Parents: 280080f Author: Lei Xu <[email protected]> Authored: Mon Oct 2 15:31:20 2017 -0700 Committer: Lei Xu <[email protected]> Committed: Mon Oct 2 15:35:49 2017 -0700 ---------------------------------------------------------------------- .../hdfs/server/namenode/FSDirErasureCodingOp.java | 3 +-- .../hadoop/hdfs/server/namenode/FSDirXAttrOp.java | 4 ++++ .../hdfs/TestUnsetAndChangeDirectoryEcPolicy.java | 13 +++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/27ffd43b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java index 181b147..391e392 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirErasureCodingOp.java @@ -298,8 +298,7 @@ final class FSDirErasureCodingOp { final List<XAttr> xattrs = Lists.newArrayListWithCapacity(1); xattrs.add(ecXAttr); - FSDirXAttrOp.unprotectedRemoveXAttrs(fsd, srcIIP, xattrs); - return xattrs; + return FSDirXAttrOp.unprotectedRemoveXAttrs(fsd, srcIIP, xattrs); } /** http://git-wip-us.apache.org/repos/asf/hadoop/blob/27ffd43b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java index acdade7..3223467 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirXAttrOp.java @@ -184,6 +184,10 @@ class FSDirXAttrOp { return fsd.getAuditFileInfo(iip); } + /** + * Remove xattrs from the inode, and return the <em>removed</em> xattrs. + * @return the <em>removed</em> xattrs. + */ static List<XAttr> unprotectedRemoveXAttrs( FSDirectory fsd, final INodesInPath iip, final List<XAttr> toRemove) throws IOException { http://git-wip-us.apache.org/repos/asf/hadoop/blob/27ffd43b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestUnsetAndChangeDirectoryEcPolicy.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestUnsetAndChangeDirectoryEcPolicy.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestUnsetAndChangeDirectoryEcPolicy.java index 529a110..52cf163 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestUnsetAndChangeDirectoryEcPolicy.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestUnsetAndChangeDirectoryEcPolicy.java @@ -362,4 +362,17 @@ public class TestUnsetAndChangeDirectoryEcPolicy { + ecFilePath, e); } } + + /** + * Test unsetEcPolicy is persisted correctly in edit log. + */ + @Test + public void testUnsetEcPolicyInEditLog() throws IOException { + fs.getClient().setErasureCodingPolicy("/", ecPolicy.getName()); + Assert.assertEquals(ecPolicy, fs.getErasureCodingPolicy(new Path("/"))); + fs.getClient().unsetErasureCodingPolicy("/"); + + cluster.restartNameNode(true); + Assert.assertNull(fs.getErasureCodingPolicy(new Path("/"))); + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
