HDFS-4910. TestPermission failed in branch-2. Contributed by Chuan Liu.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1493932 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a601f15ebe
commit
8eab891bff
|
@ -386,6 +386,8 @@ Release 2.1.0-beta - UNRELEASED
|
|||
HDFS-4845. FSNamesystem.deleteInternal should acquire write-lock before
|
||||
changing the inode map. (Arpit Agarwal via szetszwo)
|
||||
|
||||
HDFS-4910. TestPermission failed in branch-2. (Chuan Liu via cnauroth)
|
||||
|
||||
BREAKDOWN OF HDFS-347 SUBTASKS AND RELATED JIRAS
|
||||
|
||||
HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes.
|
||||
|
|
|
@ -144,35 +144,35 @@ class FSPermissionChecker {
|
|||
+ ", resolveLink=" + resolveLink);
|
||||
}
|
||||
// check if (parentAccess != null) && file exists, then check sb
|
||||
// Resolve symlinks, the check is performed on the link target.
|
||||
final INodesInPath inodesInPath = root.getINodesInPath(path, true);
|
||||
final Snapshot snapshot = inodesInPath.getPathSnapshot();
|
||||
final INode[] inodes = inodesInPath.getINodes();
|
||||
int ancestorIndex = inodes.length - 2;
|
||||
for(; ancestorIndex >= 0 && inodes[ancestorIndex] == null;
|
||||
ancestorIndex--);
|
||||
checkTraverse(inodes, ancestorIndex, snapshot);
|
||||
// If resolveLink, the check is performed on the link target.
|
||||
final INodesInPath inodesInPath = root.getINodesInPath(path, resolveLink);
|
||||
final Snapshot snapshot = inodesInPath.getPathSnapshot();
|
||||
final INode[] inodes = inodesInPath.getINodes();
|
||||
int ancestorIndex = inodes.length - 2;
|
||||
for(; ancestorIndex >= 0 && inodes[ancestorIndex] == null;
|
||||
ancestorIndex--);
|
||||
checkTraverse(inodes, ancestorIndex, snapshot);
|
||||
|
||||
final INode last = inodes[inodes.length - 1];
|
||||
if (parentAccess != null && parentAccess.implies(FsAction.WRITE)
|
||||
&& inodes.length > 1 && last != null) {
|
||||
checkStickyBit(inodes[inodes.length - 2], last, snapshot);
|
||||
}
|
||||
if (ancestorAccess != null && inodes.length > 1) {
|
||||
check(inodes, ancestorIndex, snapshot, ancestorAccess);
|
||||
}
|
||||
if (parentAccess != null && inodes.length > 1) {
|
||||
check(inodes, inodes.length - 2, snapshot, parentAccess);
|
||||
}
|
||||
if (access != null) {
|
||||
check(last, snapshot, access);
|
||||
}
|
||||
if (subAccess != null) {
|
||||
checkSubAccess(last, snapshot, subAccess);
|
||||
}
|
||||
if (doCheckOwner) {
|
||||
checkOwner(last, snapshot);
|
||||
}
|
||||
final INode last = inodes[inodes.length - 1];
|
||||
if (parentAccess != null && parentAccess.implies(FsAction.WRITE)
|
||||
&& inodes.length > 1 && last != null) {
|
||||
checkStickyBit(inodes[inodes.length - 2], last, snapshot);
|
||||
}
|
||||
if (ancestorAccess != null && inodes.length > 1) {
|
||||
check(inodes, ancestorIndex, snapshot, ancestorAccess);
|
||||
}
|
||||
if (parentAccess != null && inodes.length > 1) {
|
||||
check(inodes, inodes.length - 2, snapshot, parentAccess);
|
||||
}
|
||||
if (access != null) {
|
||||
check(last, snapshot, access);
|
||||
}
|
||||
if (subAccess != null) {
|
||||
checkSubAccess(last, snapshot, subAccess);
|
||||
}
|
||||
if (doCheckOwner) {
|
||||
checkOwner(last, snapshot);
|
||||
}
|
||||
}
|
||||
|
||||
/** Guarded by {@link FSNamesystem#readLock()} */
|
||||
|
|
Loading…
Reference in New Issue