Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B229817717 for ; Tue, 15 Sep 2015 19:11:46 +0000 (UTC) Received: (qmail 21327 invoked by uid 500); 15 Sep 2015 19:11:46 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 21239 invoked by uid 500); 15 Sep 2015 19:11:46 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 21221 invoked by uid 99); 15 Sep 2015 19:11:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Sep 2015 19:11:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3A66FDFD45; Tue, 15 Sep 2015 19:11:46 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: eclark@apache.org To: common-commits@hadoop.apache.org Date: Tue, 15 Sep 2015 19:11:46 -0000 Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: [01/50] [abbrv] hadoop git commit: HDFS-9019. Adding informative message to sticky bit permission denied exception. Contributed by Xiaoyu Yao. Repository: hadoop Updated Branches: refs/heads/HADOOP-11890 53c38cc89 -> a3d952b4d HDFS-9019. Adding informative message to sticky bit permission denied exception. Contributed by Xiaoyu Yao. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/970daaa5 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/970daaa5 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/970daaa5 Branch: refs/heads/HADOOP-11890 Commit: 970daaa5e44d3c09afd46d1c8e923a5096708c44 Parents: 090d266 Author: Xiaoyu Yao Authored: Tue Sep 8 09:57:36 2015 -0700 Committer: Xiaoyu Yao Committed: Tue Sep 8 09:57:36 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hdfs/server/namenode/FSPermissionChecker.java | 16 +++++++++++----- .../apache/hadoop/fs/permission/TestStickyBit.java | 3 +++ 3 files changed, 17 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/970daaa5/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 de44324..8b50065 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -900,6 +900,9 @@ Release 2.8.0 - UNRELEASED HDFS-8984. Move replication queues related methods in FSNamesystem to BlockManager. (wheat9) + HDFS-9019. Adding informative message to sticky bit permission denied + exception. (xyao) + OPTIMIZATIONS HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than http://git-wip-us.apache.org/repos/asf/hadoop/blob/970daaa5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java index e6570f5..041ce0b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSPermissionChecker.java @@ -207,7 +207,7 @@ class FSPermissionChecker implements AccessControlEnforcer { final INodeAttributes last = inodeAttrs[inodeAttrs.length - 1]; if (parentAccess != null && parentAccess.implies(FsAction.WRITE) && inodeAttrs.length > 1 && last != null) { - checkStickyBit(inodeAttrs[inodeAttrs.length - 2], last); + checkStickyBit(inodeAttrs[inodeAttrs.length - 2], last, path); } if (ancestorAccess != null && inodeAttrs.length > 1) { check(inodeAttrs, path, ancestorIndex, ancestorAccess); @@ -405,8 +405,8 @@ class FSPermissionChecker implements AccessControlEnforcer { } /** Guarded by {@link FSNamesystem#readLock()} */ - private void checkStickyBit(INodeAttributes parent, INodeAttributes inode - ) throws AccessControlException { + private void checkStickyBit(INodeAttributes parent, INodeAttributes inode, + String path) throws AccessControlException { if (!parent.getFsPermission().getStickyBit()) { return; } @@ -421,8 +421,14 @@ class FSPermissionChecker implements AccessControlEnforcer { return; } - throw new AccessControlException("Permission denied by sticky bit setting:" + - " user=" + getUser() + ", inode=" + inode); + throw new AccessControlException(String.format( + "Permission denied by sticky bit: user=%s, path=\"%s\":%s:%s:%s%s, " + + "parent=\"%s\":%s:%s:%s%s", user, + path, inode.getUserName(), inode.getGroupName(), + inode.isDirectory() ? "d" : "-", inode.getFsPermission().toString(), + path.substring(0, path.length() - inode.toString().length() - 1 ), + parent.getUserName(), parent.getGroupName(), + parent.isDirectory() ? "d" : "-", parent.getFsPermission().toString())); } /** http://git-wip-us.apache.org/repos/asf/hadoop/blob/970daaa5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/permission/TestStickyBit.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/permission/TestStickyBit.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/permission/TestStickyBit.java index 9d0e31b..d5cece4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/permission/TestStickyBit.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/permission/TestStickyBit.java @@ -140,6 +140,9 @@ public class TestStickyBit { } catch (IOException ioe) { assertTrue(ioe instanceof AccessControlException); assertTrue(ioe.getMessage().contains("sticky bit")); + assertTrue(ioe.getMessage().contains("user="+user2.getUserName())); + assertTrue(ioe.getMessage().contains("path=\"" + file + "\"")); + assertTrue(ioe.getMessage().contains("parent=\"" + file.getParent() + "\"")); } }