Repository: incubator-impala Updated Branches: refs/heads/master f0065d376 -> 5089aecdd
IMPALA-5420: Skip ACL fetch if the acl bit is not set. Helps avoiding an RPC to NN and unnecessary memory churn on the Catalog server. Change-Id: I96ff681fe2dddb7b777758cc49a66cc5eb741b4d Reviewed-on: http://gerrit.cloudera.org:8080/7071 Reviewed-by: Bharath Vissapragada <[email protected]> Tested-by: Impala Public Jenkins Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/bf58f111 Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/bf58f111 Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/bf58f111 Branch: refs/heads/master Commit: bf58f111699662705838e0c748cb135d1750ec76 Parents: f0065d3 Author: Bharath Vissapragada <[email protected]> Authored: Fri Jun 2 18:02:10 2017 -0700 Committer: Impala Public Jenkins <[email protected]> Committed: Tue Jun 6 02:56:04 2017 +0000 ---------------------------------------------------------------------- .../apache/impala/util/FsPermissionChecker.java | 21 +++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/bf58f111/fe/src/main/java/org/apache/impala/util/FsPermissionChecker.java ---------------------------------------------------------------------- diff --git a/fe/src/main/java/org/apache/impala/util/FsPermissionChecker.java b/fe/src/main/java/org/apache/impala/util/FsPermissionChecker.java index 579091c..136c525 100644 --- a/fe/src/main/java/org/apache/impala/util/FsPermissionChecker.java +++ b/fe/src/main/java/org/apache/impala/util/FsPermissionChecker.java @@ -284,17 +284,20 @@ public class FsPermissionChecker { Preconditions.checkNotNull(fs); Preconditions.checkNotNull(path); AclStatus aclStatus = null; - try { - aclStatus = fs.getAclStatus(path); - } catch (AclException ex) { - if (LOG.isTraceEnabled()) { - LOG.trace( - "No ACLs retrieved, skipping ACLs check (HDFS will enforce ACLs)", ex); + FileStatus fileStatus = fs.getFileStatus(path); + if (fileStatus.getPermission().getAclBit()) { + try { + aclStatus = fs.getAclStatus(path); + } catch (AclException ex) { + if (LOG.isTraceEnabled()) { + LOG.trace( + "No ACLs retrieved, skipping ACLs check (HDFS will enforce ACLs)", ex); + } + } catch (UnsupportedOperationException ex) { + if (LOG.isTraceEnabled()) LOG.trace("No ACLs retrieved, unsupported", ex); } - } catch (UnsupportedOperationException ex) { - if (LOG.isTraceEnabled()) LOG.trace("No ACLs retrieved, unsupported", ex); } - return new Permissions(fs.getFileStatus(path), aclStatus); + return new Permissions(fileStatus, aclStatus); } /**
