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 cn...@apache.org on 2014/12/22 23:09:14 UTC
hadoop git commit: HDFS-7560. ACLs removed by removeDefaultAcl() will
be back after NameNode restart/failover. Contributed by Vinayakumar B.
Repository: hadoop
Updated Branches:
refs/heads/trunk a696fbb00 -> 2cf90a2c3
HDFS-7560. ACLs removed by removeDefaultAcl() will be back after NameNode restart/failover. Contributed by Vinayakumar B.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2cf90a2c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2cf90a2c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2cf90a2c
Branch: refs/heads/trunk
Commit: 2cf90a2c338497a466bbad9e83966033bf14bfb7
Parents: a696fbb
Author: cnauroth <cn...@apache.org>
Authored: Mon Dec 22 13:59:10 2014 -0800
Committer: cnauroth <cn...@apache.org>
Committed: Mon Dec 22 13:59:10 2014 -0800
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 ++
.../hadoop/hdfs/server/namenode/FSDirAclOp.java | 12 +++---
.../hdfs/server/namenode/FSEditLogLoader.java | 3 +-
.../hdfs/server/namenode/FSAclBaseTest.java | 39 ++++++++++++++++----
4 files changed, 44 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2cf90a2c/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index c38b92a..07a78c2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -627,6 +627,9 @@ Release 2.7.0 - UNRELEASED
HDFS-7557. Fix spacing for a few keys in DFSConfigKeys.java
(Colin P.McCabe)
+ HDFS-7560. ACLs removed by removeDefaultAcl() will be back after NameNode
+ restart/failover. (Vinayakumar B via cnauroth)
+
Release 2.6.1 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2cf90a2c/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirAclOp.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirAclOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirAclOp.java
index 7aaa21c..dff1c2e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirAclOp.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirAclOp.java
@@ -143,7 +143,7 @@ class FSDirAclOp {
try {
iip = fsd.getINodesInPath4Write(src);
fsd.checkOwner(pc, iip);
- List<AclEntry> newAcl = unprotectedSetAcl(fsd, src, aclSpec);
+ List<AclEntry> newAcl = unprotectedSetAcl(fsd, src, aclSpec, false);
fsd.getEditLog().logSetAcl(src, newAcl);
} finally {
fsd.writeUnlock();
@@ -185,7 +185,7 @@ class FSDirAclOp {
}
static List<AclEntry> unprotectedSetAcl(
- FSDirectory fsd, String src, List<AclEntry> aclSpec)
+ FSDirectory fsd, String src, List<AclEntry> aclSpec, boolean fromEdits)
throws IOException {
assert fsd.hasWriteLock();
final INodesInPath iip = fsd.getINodesInPath4Write(
@@ -199,9 +199,11 @@ class FSDirAclOp {
INode inode = FSDirectory.resolveLastINode(iip);
int snapshotId = iip.getLatestSnapshotId();
- List<AclEntry> existingAcl = AclStorage.readINodeLogicalAcl(inode);
- List<AclEntry> newAcl = AclTransformation.replaceAclEntries(existingAcl,
- aclSpec);
+ List<AclEntry> newAcl = aclSpec;
+ if (!fromEdits) {
+ List<AclEntry> existingAcl = AclStorage.readINodeLogicalAcl(inode);
+ newAcl = AclTransformation.replaceAclEntries(existingAcl, aclSpec);
+ }
AclStorage.updateINodeAcl(inode, newAcl, snapshotId);
return newAcl;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2cf90a2c/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
index 9d08d4e..2ae5e03 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
@@ -823,7 +823,8 @@ public class FSEditLogLoader {
}
case OP_SET_ACL: {
SetAclOp setAclOp = (SetAclOp) op;
- FSDirAclOp.unprotectedSetAcl(fsDir, setAclOp.src, setAclOp.aclEntries);
+ FSDirAclOp.unprotectedSetAcl(fsDir, setAclOp.src, setAclOp.aclEntries,
+ true);
break;
}
case OP_SET_XATTR: {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/2cf90a2c/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
index b0275e8..528dfff 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java
@@ -426,7 +426,7 @@ public abstract class FSAclBaseTest {
}
@Test
- public void testRemoveDefaultAcl() throws IOException {
+ public void testRemoveDefaultAcl() throws Exception {
FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
List<AclEntry> aclSpec = Lists.newArrayList(
aclEntry(ACCESS, USER, ALL),
@@ -443,10 +443,15 @@ public abstract class FSAclBaseTest {
aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned);
assertPermission((short)010770);
assertAclFeature(true);
+ // restart of the cluster
+ restartCluster();
+ s = fs.getAclStatus(path);
+ AclEntry[] afterRestart = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(returned, afterRestart);
}
@Test
- public void testRemoveDefaultAclOnlyAccess() throws IOException {
+ public void testRemoveDefaultAclOnlyAccess() throws Exception {
fs.create(path).close();
fs.setPermission(path, FsPermission.createImmutable((short)0640));
List<AclEntry> aclSpec = Lists.newArrayList(
@@ -463,10 +468,15 @@ public abstract class FSAclBaseTest {
aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned);
assertPermission((short)010770);
assertAclFeature(true);
+ // restart of the cluster
+ restartCluster();
+ s = fs.getAclStatus(path);
+ AclEntry[] afterRestart = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(returned, afterRestart);
}
@Test
- public void testRemoveDefaultAclOnlyDefault() throws IOException {
+ public void testRemoveDefaultAclOnlyDefault() throws Exception {
FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
List<AclEntry> aclSpec = Lists.newArrayList(
aclEntry(DEFAULT, USER, "foo", ALL));
@@ -477,10 +487,15 @@ public abstract class FSAclBaseTest {
assertArrayEquals(new AclEntry[] { }, returned);
assertPermission((short)0750);
assertAclFeature(false);
+ // restart of the cluster
+ restartCluster();
+ s = fs.getAclStatus(path);
+ AclEntry[] afterRestart = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(returned, afterRestart);
}
@Test
- public void testRemoveDefaultAclMinimal() throws IOException {
+ public void testRemoveDefaultAclMinimal() throws Exception {
FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)0750));
fs.removeDefaultAcl(path);
AclStatus s = fs.getAclStatus(path);
@@ -488,10 +503,15 @@ public abstract class FSAclBaseTest {
assertArrayEquals(new AclEntry[] { }, returned);
assertPermission((short)0750);
assertAclFeature(false);
+ // restart of the cluster
+ restartCluster();
+ s = fs.getAclStatus(path);
+ AclEntry[] afterRestart = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(returned, afterRestart);
}
@Test
- public void testRemoveDefaultAclStickyBit() throws IOException {
+ public void testRemoveDefaultAclStickyBit() throws Exception {
FileSystem.mkdirs(fs, path, FsPermission.createImmutable((short)01750));
List<AclEntry> aclSpec = Lists.newArrayList(
aclEntry(ACCESS, USER, ALL),
@@ -508,6 +528,11 @@ public abstract class FSAclBaseTest {
aclEntry(ACCESS, GROUP, READ_EXECUTE) }, returned);
assertPermission((short)011770);
assertAclFeature(true);
+ // restart of the cluster
+ restartCluster();
+ s = fs.getAclStatus(path);
+ AclEntry[] afterRestart = s.getEntries().toArray(new AclEntry[0]);
+ assertArrayEquals(returned, afterRestart);
}
@Test(expected=FileNotFoundException.class)
@@ -1137,9 +1162,7 @@ public abstract class FSAclBaseTest {
assertFilePermissionDenied(fsAsDiana, DIANA, bruceFile);
try {
conf.setBoolean(DFSConfigKeys.DFS_PERMISSIONS_ENABLED_KEY, false);
- destroyFileSystems();
restartCluster();
- initFileSystems();
assertFilePermissionGranted(fsAsDiana, DIANA, bruceFile);
} finally {
conf.setBoolean(DFSConfigKeys.DFS_PERMISSIONS_ENABLED_KEY, true);
@@ -1404,10 +1427,12 @@ public abstract class FSAclBaseTest {
* @throws Exception if restart fails
*/
private void restartCluster() throws Exception {
+ destroyFileSystems();
shutdown();
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).format(false)
.build();
cluster.waitActive();
+ initFileSystems();
}
/**