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 wh...@apache.org on 2015/11/24 22:09:27 UTC
hadoop git commit: HDFS-8335. FSNamesystem should construct
FSPermissionChecker only if permission is enabled. Contributed by Gabor
Liptak.
Repository: hadoop
Updated Branches:
refs/heads/branch-2 38f8952c4 -> b07c91a16
HDFS-8335. FSNamesystem should construct FSPermissionChecker only if permission is enabled. Contributed by Gabor Liptak.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b07c91a1
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b07c91a1
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b07c91a1
Branch: refs/heads/branch-2
Commit: b07c91a16b8c95f55b73cd59352428c9ffe6e990
Parents: 38f8952
Author: Haohui Mai <wh...@apache.org>
Authored: Tue Nov 24 13:07:26 2015 -0800
Committer: Haohui Mai <wh...@apache.org>
Committed: Tue Nov 24 13:07:45 2015 -0800
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 6 +++++
.../server/namenode/FSDirStatAndListingOp.java | 25 +++++++++++++-------
2 files changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b07c91a1/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 9b64fae..097c8e8 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -867,6 +867,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9318. considerLoad factor can be improved. (Kuhu Shukla via kihwal)
+ HDFS-8335. FSNamesystem should construct FSPermissionChecker only if
+ permission is enabled. (Gabor Liptak via wheat9)
+
BUG FIXES
HDFS-8091: ACLStatus and XAttributes should be presented to
@@ -1513,6 +1516,9 @@ Release 2.8.0 - UNRELEASED
HDFS-6101. TestReplaceDatanodeOnFailure fails occasionally.
(Wei-Chiu Chuang via cnauroth)
+ HDFS-8335. FSNamesystem should construct FSPermissionChecker only if
+ permission is enabled. (Gabor Liptak via wheat9)
+
Release 2.7.3 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b07c91a1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirStatAndListingOp.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirStatAndListingOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirStatAndListingOp.java
index 171e2f1..c5c2fb4 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirStatAndListingOp.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirStatAndListingOp.java
@@ -50,12 +50,17 @@ import static org.apache.hadoop.util.Time.now;
class FSDirStatAndListingOp {
static DirectoryListing getListingInt(FSDirectory fsd, final String srcArg,
byte[] startAfter, boolean needLocation) throws IOException {
- FSPermissionChecker pc = fsd.getPermissionChecker();
byte[][] pathComponents = FSDirectory
.getPathComponentsForReservedPath(srcArg);
final String startAfterString = new String(startAfter, Charsets.UTF_8);
- final String src = fsd.resolvePath(pc, srcArg, pathComponents);
- final INodesInPath iip = fsd.getINodesInPath(src, true);
+ String src = null;
+
+ if (fsd.isPermissionEnabled()) {
+ FSPermissionChecker pc = fsd.getPermissionChecker();
+ src = fsd.resolvePath(pc, srcArg, pathComponents);
+ } else {
+ src = FSDirectory.resolvePath(srcArg, pathComponents, fsd);
+ }
// Get file name when startAfter is an INodePath
if (FSDirectory.isReservedName(startAfterString)) {
@@ -72,8 +77,10 @@ class FSDirStatAndListingOp {
}
}
+ final INodesInPath iip = fsd.getINodesInPath(src, true);
boolean isSuperUser = true;
if (fsd.isPermissionEnabled()) {
+ FSPermissionChecker pc = fsd.getPermissionChecker();
if (iip.getLastINode() != null && iip.getLastINode().isDirectory()) {
fsd.checkPathAccess(pc, iip, FsAction.READ_EXECUTE);
} else {
@@ -101,15 +108,17 @@ class FSDirStatAndListingOp {
if (!DFSUtil.isValidName(src)) {
throw new InvalidPathException("Invalid file name: " + src);
}
- FSPermissionChecker pc = fsd.getPermissionChecker();
byte[][] pathComponents = FSDirectory.getPathComponentsForReservedPath(src);
- src = fsd.resolvePath(pc, src, pathComponents);
- final INodesInPath iip = fsd.getINodesInPath(src, resolveLink);
if (fsd.isPermissionEnabled()) {
+ FSPermissionChecker pc = fsd.getPermissionChecker();
+ src = fsd.resolvePath(pc, src, pathComponents);
+ final INodesInPath iip = fsd.getINodesInPath(src, resolveLink);
fsd.checkPermission(pc, iip, false, null, null, null, null, false);
+ } else {
+ src = FSDirectory.resolvePath(src, pathComponents, fsd);
}
- return getFileInfo(fsd, src, resolveLink,
- FSDirectory.isReservedRawName(srcArg));
+ return getFileInfo(fsd, src, FSDirectory.isReservedRawName(srcArg),
+ resolveLink);
}
/**