Repository: hive Updated Branches: refs/heads/branch-1 6d90af6be -> 0e83ae1e2
HIVE-13729: FileSystem leaks in FileUtils.checkFileAccessWithImpersonation Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/0e83ae1e Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/0e83ae1e Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/0e83ae1e Branch: refs/heads/branch-1 Commit: 0e83ae1e2020865de10ea11bb43e2446b78417fe Parents: 6d90af6 Author: Daniel Dai <[email protected]> Authored: Wed May 25 21:44:54 2016 -0700 Committer: Daniel Dai <[email protected]> Committed: Wed May 25 21:45:43 2016 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hive/common/FileUtils.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/0e83ae1e/common/src/java/org/apache/hadoop/hive/common/FileUtils.java ---------------------------------------------------------------------- diff --git a/common/src/java/org/apache/hadoop/hive/common/FileUtils.java b/common/src/java/org/apache/hadoop/hive/common/FileUtils.java index 28f67b3..9bf0b1f 100644 --- a/common/src/java/org/apache/hadoop/hive/common/FileUtils.java +++ b/common/src/java/org/apache/hadoop/hive/common/FileUtils.java @@ -382,14 +382,18 @@ public final class FileUtils { // Otherwise, try user impersonation. Current user must be configured to do user impersonation. UserGroupInformation proxyUser = UserGroupInformation.createProxyUser( user, UserGroupInformation.getLoginUser()); - proxyUser.doAs(new PrivilegedExceptionAction<Object>() { - @Override - public Object run() throws Exception { - FileSystem fsAsUser = FileSystem.get(fs.getUri(), fs.getConf()); - ShimLoader.getHadoopShims().checkFileAccess(fsAsUser, stat, action); - return null; - } - }); + try { + proxyUser.doAs(new PrivilegedExceptionAction<Object>() { + @Override + public Object run() throws Exception { + FileSystem fsAsUser = FileSystem.get(fs.getUri(), fs.getConf()); + ShimLoader.getHadoopShims().checkFileAccess(fsAsUser, stat, action); + return null; + } + }); + } finally { + FileSystem.closeAllForUGI(proxyUser); + } } /**
