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);
+    }
   }
 
   /**

Reply via email to