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 c2c54bc..496f484 100644 --- a/common/src/java/org/apache/hadoop/hive/common/FileUtils.java +++ b/common/src/java/org/apache/hadoop/hive/common/FileUtils.java @@ -381,14 +381,18 @@ public static void checkFileAccessWithImpersonation(final FileSystem fs, // Otherwise, try user impersonation. Current user must be configured to do user impersonation. UserGroupInformation proxyUser = UserGroupInformation.createProxyUser( user, UserGroupInformation.getLoginUser()); - proxyUser.doAs(new PrivilegedExceptionAction() { - @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() { + @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); + } } /**