Github user denalex commented on a diff in the pull request:

    https://github.com/apache/incubator-hawq/pull/1379#discussion_r201519675
  
    --- Diff: 
pxf/pxf-service/src/main/java/org/apache/hawq/pxf/service/servlet/SecurityServletFilter.java
 ---
    @@ -89,32 +106,49 @@ public Boolean run() throws IOException, 
ServletException {
                 };
     
                 // create proxy user UGI from the UGI of the logged in user 
and execute the servlet chain as that user
    -            UserGroupInformation proxyUGI = null;
    +            UGICacheEntry timedProxyUGI = cache.getTimedProxyUGI(session);
                 try {
    -                LOG.debug("Creating proxy user = " + user);
    -                proxyUGI = UserGroupInformation.createProxyUser(user, 
UserGroupInformation.getLoginUser());
    -                proxyUGI.doAs(action);
    +                timedProxyUGI.getUGI().doAs(action);
                 } catch (UndeclaredThrowableException ute) {
                     // unwrap the real exception thrown by the action
                     throw new ServletException(ute.getCause());
                 } catch (InterruptedException ie) {
                     throw new ServletException(ie);
    -            } finally {
    -                try {
    -                    if (proxyUGI != null) {
    -                        LOG.debug("Closing FileSystem for proxy user = " + 
proxyUGI.getUserName());
    -                        FileSystem.closeAllForUGI(proxyUGI);
    -                    }
    -                } catch (Throwable t) {
    -                    LOG.warn("Error closing FileSystem for proxy user = " 
+ proxyUGI.getUserName());
    -                }
    +            }
    +            finally {
    +                // Optimization to cleanup the cache if it is the last 
fragment
    +                boolean forceClean = (fragmentIndex != null && 
fragmentCount.equals(fragmentIndex));
    +                cache.release(timedProxyUGI, forceClean);
    --- End diff --
    
    if release throws exception, we do not want to propagate it to user, so 
restore catch (Throwable t) block ?


---

Reply via email to