HDFS-12066. When Namenode is in safemode,may not allowed to remove an user's erasure coding policy. Contributed by lufei.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/e3ae3e26 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/e3ae3e26 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/e3ae3e26 Branch: refs/heads/HDFS-7240 Commit: e3ae3e26446c2e98b7aebc4ea66256cfdb4a397f Parents: 1040bae Author: Wei-Chiu Chuang <weic...@apache.org> Authored: Tue Aug 15 07:41:10 2017 -0700 Committer: Wei-Chiu Chuang <weic...@apache.org> Committed: Tue Aug 15 07:41:43 2017 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hdfs/server/namenode/FSNamesystem.java | 3 +++ .../src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java | 9 +++++++++ 2 files changed, 12 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/e3ae3e26/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index caf73f7..1cfaa54 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -7113,6 +7113,9 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, boolean success = false; writeLock(); try { + checkOperation(OperationCategory.WRITE); + checkNameNodeSafeMode("Cannot remove erasure coding policy " + + ecPolicyName); FSDirErasureCodingOp.removeErasureCodePolicy(this, ecPolicyName); success = true; } finally { http://git-wip-us.apache.org/repos/asf/hadoop/blob/e3ae3e26/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java index bc95ec7..f25d28f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestSafeMode.java @@ -482,6 +482,15 @@ public class TestSafeMode { // expected } + try { + dfs.removeErasureCodingPolicy("testECName"); + fail("RemoveErasureCodingPolicy should have failed."); + } catch (IOException ioe) { + GenericTestUtils.assertExceptionContains( + "Cannot remove erasure coding policy", ioe); + // expected + } + assertFalse("Could not leave SM", dfs.setSafeMode(SafeModeAction.SAFEMODE_LEAVE)); } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org