Closing PXF proxy UGIs on each request (implemented in
HAWQ-1621) slows down PXF request response time significantly when several threads work concurrently as it locks FileSystem cache and holds the lock while the cleanup of DFSClients is completed.
This can be avoided by caching the proxy UGI for a given proxy user between requests. Care must be taken to remove the cached entry after some pre-defined TTL if and only if there are no current threads using any FileSystem entries held by the cache. A combination of TTL-based cache with ref-counting might be utilized to achieve this.
For some example of this, see:
Caching UGIs might be tricky when Kerberos support is implemented later, see: https://issues.apache.org/jira/browse/HIVE-3098?focusedCommentId=13398979&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-13398979