This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch ranger-2.6
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.6 by this push:
     new 3f6c5d4e3 RANGER-4891: replaced use of PrivilegedAction with 
PrivilegedExceptionAction in calls to UserGroupInformation.doAs()
3f6c5d4e3 is described below

commit 3f6c5d4e3df4d34b1c3ea9c919b5fd63d18fc874
Author: Madhan Neethiraj <mad...@apache.org>
AuthorDate: Tue Aug 6 05:15:01 2024 -0700

    RANGER-4891: replaced use of PrivilegedAction with 
PrivilegedExceptionAction in calls to UserGroupInformation.doAs()
    
    (cherry picked from commit f58a47e2dddf17ec3c20814b6dc99b50ba96c92a)
---
 .../audit/destination/HDFSAuditDestination.java    |  14 +-
 .../ranger/audit/provider/LocalFileLogBuffer.java  |  13 +-
 .../audit/provider/kafka/KafkaAuditProvider.java   |  28 +-
 .../ranger/admin/client/RangerAdminRESTClient.java | 319 +++++++++------------
 .../contextenricher/RangerUserStoreRefresher.java  |  22 +-
 .../main/java/org/apache/ranger/RangerClient.java  |  28 +-
 .../admin/client/RangerAdminJersey2RESTClient.java | 106 +++----
 .../ranger/services/storm/client/StormClient.java  |  13 +-
 .../tagsync/sink/tagadmin/TagAdminRESTSink.java    |  19 +-
 9 files changed, 244 insertions(+), 318 deletions(-)

diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/destination/HDFSAuditDestination.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/destination/HDFSAuditDestination.java
index 3449d7602..4ad8dfd98 100644
--- 
a/agents-audit/src/main/java/org/apache/ranger/audit/destination/HDFSAuditDestination.java
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/destination/HDFSAuditDestination.java
@@ -20,7 +20,7 @@
 package org.apache.ranger.audit.destination;
 
 import java.io.File;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -130,13 +130,15 @@ public class HDFSAuditDestination extends 
AuditDestination {
                if (logger.isDebugEnabled()) {
                        logger.debug("==> HDFSAuditDestination.flush() called. 
name={}", getName());
                }
-               MiscUtil.executePrivilegedAction(new PrivilegedAction<Void>() {
-                       @Override
-                       public Void run() {
+               try {
+                       
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Void>) () -> {
                                auditWriter.flush();
                                return null;
-                       }
-               });
+                       });
+               } catch (Exception excp) {
+                       logger.error("HDFSAuditDestination.flush() failed", 
excp);
+               }
+
                if (logger.isDebugEnabled()) {
                        logger.debug("<== HDFSAuditDestination.flush() called. 
name={}", getName());
                }
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java
index 4dc195dc7..d720ebccc 100644
--- 
a/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java
@@ -32,7 +32,7 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.TreeSet;
@@ -415,14 +415,15 @@ class DestinationDispatcherThread<T> extends Thread {
                        return;
                }
 
-               loginUser.doAs(new PrivilegedAction<Integer>() {
-                       @Override
-                       public Integer run() {
+               try {
+                       loginUser.doAs((PrivilegedExceptionAction<Integer>) () 
-> {
                                doRun();
 
                                return 0;
-                       }
-               });
+                       });
+               } catch (Exception excp) {
+                       mLogger.error("DestinationDispatcherThread.run(): 
failed", excp);
+               }
        }
 
        private void doRun() {
diff --git 
a/agents-audit/src/main/java/org/apache/ranger/audit/provider/kafka/KafkaAuditProvider.java
 
b/agents-audit/src/main/java/org/apache/ranger/audit/provider/kafka/KafkaAuditProvider.java
index 3df53aed7..3a452c22a 100644
--- 
a/agents-audit/src/main/java/org/apache/ranger/audit/provider/kafka/KafkaAuditProvider.java
+++ 
b/agents-audit/src/main/java/org/apache/ranger/audit/provider/kafka/KafkaAuditProvider.java
@@ -16,7 +16,7 @@
  */
 package org.apache.ranger.audit.provider.kafka;
 
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -74,13 +74,7 @@ public class KafkaAuditProvider extends AuditDestination {
                                LOG.info("Connecting to Kafka producer using 
properties:"
                                                + kakfaProps.toString());
 
-                               producer  = 
MiscUtil.executePrivilegedAction(new PrivilegedAction<Producer<String, 
String>>() {
-                                       @Override
-                                       public Producer<String, String> run(){
-                                               Producer<String, String> 
producer = new KafkaProducer<String, String>(kakfaProps);
-                                               return producer;
-                                       };
-                               });
+                               producer = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Producer<String, 
String>>) () -> new KafkaProducer<>(kakfaProps));
 
                                initDone = true;
                        }
@@ -115,12 +109,9 @@ public class KafkaAuditProvider extends AuditDestination {
                                final ProducerRecord<String, String> 
keyedMessage = new ProducerRecord<String, String>(
                                                topic, message);
 
-                               MiscUtil.executePrivilegedAction(new 
PrivilegedAction<Void>() {
-                                       @Override
-                                       public Void run(){
-                                               producer.send(keyedMessage);
-                                               return null;
-                                       };
+                               
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Void>) () -> {
+                                       producer.send(keyedMessage);
+                                       return null;
                                });
 
                        } else {
@@ -169,12 +160,9 @@ public class KafkaAuditProvider extends AuditDestination {
                LOG.info("stop() called");
                if (producer != null) {
                        try {
-                               MiscUtil.executePrivilegedAction(new 
PrivilegedAction<Void>() {
-                                       @Override
-                                       public Void run() {
-                                               producer.close();
-                                               return null;
-                                       };
+                               
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Void>) () -> {
+                                       producer.close();
+                                       return null;
                                });
                        } catch (Throwable t) {
                                LOG.error("Error closing Kafka producer");
diff --git 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
index cf4404743..cb7c510c7 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
@@ -39,7 +39,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.Cookie;
 import javax.ws.rs.core.NewCookie;
 import java.io.UnsupportedEncodingException;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -163,7 +163,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
 
                RangerRole ret = null;
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_CREATE_ROLE;
@@ -172,21 +172,19 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.SERVICE_NAME_PARAM, 
serviceNameUrlParam);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
+                       if (LOG.isDebugEnabled()) {
+                               LOG.debug("create role as user " + user);
+                       }
+
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
                                        try {
-                                               clientRes = 
restClient.post(relativeURL, queryParams, request);
+                                               return 
restClient.post(relativeURL, queryParams, request);
                                        } catch (Exception e) {
                                                LOG.error("Failed to get 
response, Error is : "+e.getMessage());
                                        }
-                                       return clientRes;
-                               }
-                       };
-                       if (LOG.isDebugEnabled()) {
-                               LOG.debug("create role as user " + user);
-                       }
-                       response = user.doAs(action);
+
+                                       return null;
+                               });
                } else {
                        response = restClient.post(relativeURL, queryParams, 
request);
                }
@@ -218,7 +216,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        LOG.debug("==> RangerAdminRESTClient.dropRole(" + 
roleName + ")");
                }
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
 
@@ -229,21 +227,18 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                String relativeURL = RangerRESTUtils.REST_URL_SERVICE_DROP_ROLE 
+ roleName;
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
+                       if (LOG.isDebugEnabled()) {
+                               LOG.debug("drop role as user " + user);
+                       }
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
                                        try {
-                                               clientRes = 
restClient.delete(relativeURL, queryParams);
+                                               return 
restClient.delete(relativeURL, queryParams);
                                        } catch (Exception e) {
                                                LOG.error("Failed to get 
response, Error is : "+e.getMessage());
                                        }
-                                       return clientRes;
-                               }
-                       };
-                       if (LOG.isDebugEnabled()) {
-                               LOG.debug("drop role as user " + user);
-                       }
-                       response = user.doAs(action);
+
+                                       return null;
+                               });
                } else {
                        response = restClient.delete(relativeURL, queryParams);
                }
@@ -273,27 +268,24 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
 
                List<String> ret = null;
                String emptyString = "";
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GET_USER_ROLES + execUser;
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
-                                       try {
-                                               clientRes = 
restClient.get(relativeURL, null);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                                       return clientRes;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("get roles as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.get(relativeURL, 
null);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.get(relativeURL, null);
                }
@@ -328,7 +320,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
 
                List<String> ret = null;
                String emptyString = "";
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GET_ALL_ROLES;
@@ -338,21 +330,18 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_EXEC_USER, execUser);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
-                                       try {
-                                               clientRes = 
restClient.get(relativeURL, queryParams);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientRes;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("get roles as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.get(relativeURL, 
queryParams);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.get(relativeURL, queryParams);
                }
@@ -386,7 +375,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                }
 
                RangerRole ret = null;
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GET_ROLE_INFO + roleName;
@@ -396,21 +385,18 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_EXEC_USER, execUser);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.get(relativeURL, queryParams);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("get role info as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.get(relativeURL, 
queryParams);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.get(relativeURL, queryParams);
                }
@@ -444,27 +430,24 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        LOG.debug("==> RangerAdminRESTClient.grantRole(" + 
request + ")");
                }
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GRANT_ROLE + serviceNameUrlParam;
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.put(relativeURL, null, request);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("grant role as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.put(relativeURL, 
null, request);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.put(relativeURL, null, request);
                }
@@ -492,27 +475,24 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        LOG.debug("==> RangerAdminRESTClient.revokeRole(" + 
request + ")");
                }
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
                String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_REVOKE_ROLE + serviceNameUrlParam;
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.put(relativeURL, null, request);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("revoke role as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.put(relativeURL, 
null, request);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.put(relativeURL, null, request);
                }
@@ -540,7 +520,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        LOG.debug("==> RangerAdminRESTClient.grantAccess(" + 
request + ")");
                }
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
 
@@ -548,22 +528,20 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_PLUGIN_ID, pluginId);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       String relativeURL = 
RangerRESTUtils.REST_URL_SECURE_SERVICE_GRANT_ACCESS + serviceNameUrlParam;
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.post(relativeURL, queryParams, request);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("grantAccess as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       String relativeURL = 
RangerRESTUtils.REST_URL_SECURE_SERVICE_GRANT_ACCESS + serviceNameUrlParam;
+
+                                       return restClient.post(relativeURL, 
queryParams, request);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_GRANT_ACCESS + serviceNameUrlParam;
                        response = restClient.post(relativeURL, queryParams, 
request);
@@ -592,7 +570,7 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        LOG.debug("==> RangerAdminRESTClient.revokeAccess(" + 
request + ")");
                }
 
-               ClientResponse response = null;
+               final ClientResponse response;
                UserGroupInformation user = MiscUtil.getUGILoginUser();
                boolean isSecureMode = isKerberosEnabled(user);
 
@@ -600,22 +578,20 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_PLUGIN_ID, pluginId);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       String relativeURL = 
RangerRESTUtils.REST_URL_SECURE_SERVICE_REVOKE_ACCESS + serviceNameUrlParam;
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.post(relativeURL, queryParams, request);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("revokeAccess as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       String relativeURL = 
RangerRESTUtils.REST_URL_SECURE_SERVICE_REVOKE_ACCESS + serviceNameUrlParam;
+
+                                       return restClient.post(relativeURL, 
queryParams, request);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_REVOKE_ACCESS + serviceNameUrlParam;
                        response = restClient.post(relativeURL, queryParams, 
request);
@@ -692,23 +668,20 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.PATTERN_PARAM, pattern);
                String relativeURL = RangerRESTUtils.REST_URL_LOOKUP_TAG_NAMES;
 
-               ClientResponse response = null;
+               final ClientResponse response;
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.get(relativeURL, queryParams);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                               return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("getTagTypes as user " + user);
                        }
-                       response = user.doAs(action);
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       return restClient.get(relativeURL, 
queryParams);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        response = restClient.get(relativeURL, queryParams);
                }
@@ -750,19 +723,17 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking UserStore updated as user : 
" + user);
                        }
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
                                        String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USERSTORE + serviceNameUrlParam;
-                                       try {
-                                               clientRes =  
restClient.get(relativeURL, queryParams);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                                       return clientRes;
+
+                                       return restClient.get(relativeURL, 
queryParams);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
                                }
-                       };
-                       response = user.doAs(action);
+
+                               return null;
+                       });
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking UserStore updated as user : 
" + user);
@@ -933,19 +904,17 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Service policy if updated 
as user : " + user);
                        }
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
                                        String relativeURL = 
RangerRESTUtils.REST_URL_POLICY_GET_FOR_SECURE_SERVICE_IF_UPDATED + 
serviceNameUrlParam;
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.get(relativeURL, queryParams, policyDownloadSessionId);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                                       return clientResp;
+
+                                       return restClient.get(relativeURL, 
queryParams, policyDownloadSessionId);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
                                }
-                       };
-                       ret = user.doAs(action);
+
+                               return null;
+                       });
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Service policy if updated 
with old api call");
@@ -1115,22 +1084,20 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_CAPABILITIES, 
pluginCapabilities);
 
                if (isSecureMode) {
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       String relativeURL = 
RangerRESTUtils.REST_URL_GET_SECURE_SERVICE_TAGS_IF_UPDATED + 
serviceNameUrlParam;
-                                       ClientResponse clientResp = null;
-                                       try {
-                                               clientResp = 
restClient.get(relativeURL, queryParams, tagDownloadSessionId);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                                       return clientResp;
-                               }
-                       };
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("getServiceTagsIfUpdated as user " + 
user);
                        }
-                       ret = user.doAs(action);
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
+                                       String relativeURL = 
RangerRESTUtils.REST_URL_GET_SECURE_SERVICE_TAGS_IF_UPDATED + 
serviceNameUrlParam;
+
+                                       return restClient.get(relativeURL, 
queryParams, tagDownloadSessionId);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
+                               }
+
+                               return null;
+                       });
                } else {
                        String relativeURL = 
RangerRESTUtils.REST_URL_GET_SERVICE_TAGS_IF_UPDATED + serviceNameUrlParam;
                        ret = restClient.get(relativeURL, queryParams);
@@ -1300,19 +1267,17 @@ public class RangerAdminRESTClient extends 
AbstractRangerAdminClient {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Roles updated as user : " + 
user);
                        }
-                       PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                               public ClientResponse run() {
-                                       ClientResponse clientRes = null;
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                               try {
                                        String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USER_GROUP_ROLES + 
serviceNameUrlParam;
-                                       try {
-                                               clientRes =  
restClient.get(relativeURL, queryParams, roleDownloadSessionId);
-                                       } catch (Exception e) {
-                                               LOG.error("Failed to get 
response, Error is : "+e.getMessage());
-                                       }
-                                       return clientRes;
+
+                                       return restClient.get(relativeURL, 
queryParams, roleDownloadSessionId);
+                               } catch (Exception e) {
+                                       LOG.error("Failed to get response, 
Error is : "+e.getMessage());
                                }
-                       };
-                       ret = user.doAs(action);
+
+                               return null;
+                       });
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Roles updated as user : " + 
user);
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerUserStoreRefresher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerUserStoreRefresher.java
index 5e2629f1c..97fe18157 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerUserStoreRefresher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerUserStoreRefresher.java
@@ -41,7 +41,7 @@ import java.io.Writer;
 import java.io.FileWriter;
 import java.io.FileReader;
 import java.nio.channels.ClosedByInterruptException;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.BlockingQueue;
@@ -378,19 +378,17 @@ public class RangerUserStoreRefresher extends Thread {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Checking UserStore updated as user : " + user);
             }
-            PrivilegedAction<ClientResponse> action = new 
PrivilegedAction<ClientResponse>() {
-                public ClientResponse run() {
-                    ClientResponse clientRes = null;
+            response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                try {
                     String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USERSTORE;
-                    try {
-                        clientRes =  rangerRESTClient.get(relativeURL, 
queryParams);
-                    } catch (Exception e) {
-                        LOG.error("Failed to get response, Error is : 
"+e.getMessage());
-                    }
-                    return clientRes;
+
+                    return rangerRESTClient.get(relativeURL, queryParams);
+                } catch (Exception e) {
+                    LOG.error("Failed to get response, Error is : 
"+e.getMessage());
                 }
-            };
-            response = user.doAs(action);
+
+                return null;
+            });
         } else {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Checking UserStore updated as user : " + user);
diff --git a/intg/src/main/java/org/apache/ranger/RangerClient.java 
b/intg/src/main/java/org/apache/ranger/RangerClient.java
index e2fcc2581..a61c13fd2 100644
--- a/intg/src/main/java/org/apache/ranger/RangerClient.java
+++ b/intg/src/main/java/org/apache/ranger/RangerClient.java
@@ -33,7 +33,7 @@ import org.apache.ranger.admin.client.datatype.RESTResponse;
 import org.apache.ranger.plugin.util.GrantRevokeRoleRequest;
 import org.apache.ranger.plugin.util.RangerRESTClient;
 
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -169,13 +169,12 @@ public class RangerClient {
 
     private final RangerRESTClient restClient;
     private boolean isSecureMode     = false;
-    private UserGroupInformation ugi = null;
 
     private void authInit(String authType, String username, String password) {
         if (AUTH_KERBEROS.equalsIgnoreCase(authType)) {
             isSecureMode = true;
             MiscUtil.loginWithKeyTab(password, username, null);
-            ugi = MiscUtil.getUGILoginUser();
+            UserGroupInformation ugi = MiscUtil.getUGILoginUser();
             LOG.info("RangerClient.authInit() UGI user: " + ugi.getUserName() 
+ " principal: " + username);
         } else {
             restClient.setBasicAuthInfo(username, password);
@@ -528,15 +527,18 @@ public class RangerClient {
         }
 
         if (isSecureMode) {
-            ugi = MiscUtil.getUGILoginUser();
-            clientResponse = ugi.doAs((PrivilegedAction<ClientResponse>) () -> 
{
-                try {
-                    return invokeREST(api,params,request);
-                } catch (RangerServiceException e) {
-                    LOG.error(e.getMessage());
-                }
-                return null;
-            });
+            try {
+                clientResponse = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<ClientResponse>) () 
-> {
+                    try {
+                        return invokeREST(api,params,request);
+                    } catch (RangerServiceException e) {
+                        LOG.error(e.getMessage());
+                    }
+                    return null;
+                });
+            } catch (Exception excp) {
+                throw new RangerServiceException(excp);
+            }
         } else {
             clientResponse = invokeREST(api,params,request);
         }
@@ -689,4 +691,4 @@ public class RangerClient {
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git 
a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
 
b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
index 8cc6c12a6..04ba7a0c4 100644
--- 
a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
+++ 
b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
@@ -23,7 +23,7 @@ import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Type;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -305,20 +305,17 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                LOG.debug("Checking UserStore updated as user: 
{}", user);
                        }
 
-                       PrivilegedAction<Response> action = () -> {
-                               Response resp        = null;
-                               String   relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USERSTORE + _serviceNameUrlParam;
-
+                       response = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Response>) () -> {
                                try {
-                                       resp = get(queryParams, relativeURL);
+                                       String relativeURL = 
RangerRESTUtils.REST_URL_SERVICE_SERCURE_GET_USERSTORE + _serviceNameUrlParam;
+
+                                       return get(queryParams, relativeURL);
                                } catch (Exception e) {
                                        LOG.error("Failed to get response", e);
                                }
 
-                               return resp;
-                       };
-
-                       response = user.doAs(action);
+                               return null;
+                       });
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking UserStore updated as user: 
{}", user);
@@ -539,9 +536,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final ServicePolicies ret;
 
-               final UserGroupInformation user         = 
MiscUtil.getUGILoginUser();
-               final boolean              isSecureMode = 
isKerberosEnabled(user);
-               final Response             response     = 
getRangerAdminPolicyDownloadResponse(lastKnownVersion, 
lastActivationTimeInMillis, user, isSecureMode);
+               final Response response = 
getRangerAdminPolicyDownloadResponse(lastKnownVersion, 
lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -587,7 +582,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                ret = null;
                                policyDownloadSessionId = null;
                                body = response.readEntity(String.class);
-                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURL(isSecureMode)));
+                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURL(isSecureMode())));
                                break;
                }
 
@@ -605,9 +600,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final ServicePolicies ret;
 
-               final UserGroupInformation user         = 
MiscUtil.getUGILoginUser();
-               final boolean              isSecureMode = 
isKerberosEnabled(user);
-               final Response             response     = 
getRangerAdminPolicyDownloadResponse(lastKnownVersion, 
lastActivationTimeInMillis, user, isSecureMode);
+               final Response             response     = 
getRangerAdminPolicyDownloadResponse(lastKnownVersion, 
lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -656,7 +649,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                policyDownloadSessionId = null;
                                isValidPolicyDownloadSessionCookie = false;
                                body = response.readEntity(String.class);
-                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURL(isSecureMode)));
+                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURL(isSecureMode())));
                                break;
                }
 
@@ -667,7 +660,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                return ret;
        }
 
-       private Response getRangerAdminPolicyDownloadResponse(final long 
lastKnownVersion, final long lastActivationTimeInMillis, final 
UserGroupInformation user, final boolean isSecureMode) throws Exception {
+       private Response getRangerAdminPolicyDownloadResponse(final long 
lastKnownVersion, final long lastActivationTimeInMillis) throws Exception {
                if (LOG.isDebugEnabled()) {
                        LOG.debug("==> 
RangerAdminJersey2RESTClient.getRangerAdminPolicyDownloadResponse(" + 
lastKnownVersion + ", " + lastActivationTimeInMillis + ")");
                }
@@ -682,23 +675,16 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                
queryParams.put(RangerRESTUtils.REST_PARAM_SUPPORTS_POLICY_DELTAS, 
Boolean.toString(_supportsPolicyDeltas));
                queryParams.put(RangerRESTUtils.REST_PARAM_CAPABILITIES, 
pluginCapabilities);
 
-               final String relativeURL = getRelativeURL(isSecureMode);
-
-               if (isSecureMode) {
+               if (isSecureMode()) {
                        if (LOG.isDebugEnabled()) {
-                               LOG.debug("Checking Service policy if updated 
as user : " + user);
+                               LOG.debug("Checking Service policy if updated 
as user : " + MiscUtil.getUGILoginUser());
                        }
-                       PrivilegedAction<Response> action = new 
PrivilegedAction<Response>() {
-                               public Response run() {
-                                       return get(queryParams, relativeURL, 
policyDownloadSessionId);
-                               }
-                       };
-                       ret = user.doAs(action);
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Response>) () -> 
get(queryParams, getRelativeURL(true), policyDownloadSessionId));
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Service policy if updated 
with old api call");
                        }
-                       ret = get(queryParams, relativeURL, 
policyDownloadSessionId);
+                       ret = get(queryParams, getRelativeURL(false), 
policyDownloadSessionId);
                }
 
                if (LOG.isDebugEnabled()) {
@@ -755,9 +741,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final ServiceTags ret;
 
-               final UserGroupInformation user         = 
MiscUtil.getUGILoginUser();
-               final boolean              isSecureMode = 
isKerberosEnabled(user);
-               final Response             response     = 
getTagsDownloadResponse(lastKnownVersion, lastActivationTimeInMillis, user, 
isSecureMode);
+               final Response response  = 
getTagsDownloadResponse(lastKnownVersion, lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -803,7 +787,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                ret = null;
                                tagDownloadSessionId = null;
                                body = response.readEntity(String.class);
-                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForTagDownload(isSecureMode)));
+                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForTagDownload(isSecureMode())));
                                break;
                }
 
@@ -821,9 +805,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final ServiceTags ret;
 
-               final UserGroupInformation user = MiscUtil.getUGILoginUser();
-               final boolean isSecureMode = isKerberosEnabled(user);
-               final Response response = 
getTagsDownloadResponse(lastKnownVersion, lastActivationTimeInMillis, user, 
isSecureMode);
+               final Response response = 
getTagsDownloadResponse(lastKnownVersion, lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -883,7 +865,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                return ret;
        }
 
-       private Response getTagsDownloadResponse(final long lastKnownVersion, 
final long lastActivationTimeInMillis, final UserGroupInformation user, final 
boolean isSecureMode) throws Exception {
+       private Response getTagsDownloadResponse(final long lastKnownVersion, 
final long lastActivationTimeInMillis) throws Exception {
                if (LOG.isDebugEnabled()) {
                        LOG.debug("==> 
RangerAdminJersey2RESTClient.getTagsDownloadResponse(" + lastKnownVersion + ", 
" + lastActivationTimeInMillis + ")");
                }
@@ -897,23 +879,16 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_SUPPORTS_TAG_DELTAS, 
Boolean.toString(_supportsTagDeltas));
                queryParams.put(RangerRESTUtils.REST_PARAM_CAPABILITIES, 
pluginCapabilities);
 
-               final String relativeURL = 
getRelativeURLForTagDownload(isSecureMode);
-
-               if (isSecureMode) {
+               if (isSecureMode()) {
                        if (LOG.isDebugEnabled()) {
-                               LOG.debug("Checking Service tags if updated as 
user : " + user);
+                               LOG.debug("Checking Service tags if updated as 
user : " + MiscUtil.getUGILoginUser());
                        }
-                       PrivilegedAction<Response> action = new 
PrivilegedAction<Response>() {
-                               public Response run() {
-                                       return get(queryParams, relativeURL, 
tagDownloadSessionId);
-                               }
-                       };
-                       ret = user.doAs(action);
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Response>) () -> 
get(queryParams, getRelativeURLForTagDownload(true), tagDownloadSessionId));
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Service tags if updated 
with old api call");
                        }
-                       ret = get(queryParams, relativeURL, 
tagDownloadSessionId);
+                       ret = get(queryParams, 
getRelativeURLForTagDownload(false), tagDownloadSessionId);
                }
 
                if (LOG.isDebugEnabled()) {
@@ -969,9 +944,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final RangerRoles ret;
 
-               final UserGroupInformation user         = 
MiscUtil.getUGILoginUser();
-               final boolean              isSecureMode = 
isKerberosEnabled(user);
-               final Response             response     = 
getRoleDownloadResponse(lastKnownRoleVersion, lastActivationTimeInMillis, user, 
isSecureMode);
+               final Response response = 
getRoleDownloadResponse(lastKnownRoleVersion, lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -1017,7 +990,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                ret = null;
                                roleDownloadSessionId = null;
                                body = response.readEntity(String.class);
-                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForRoleDownload(isSecureMode)));
+                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForRoleDownload(isSecureMode())));
                                break;
                }
 
@@ -1035,9 +1008,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                final RangerRoles ret;
 
-               final UserGroupInformation user = MiscUtil.getUGILoginUser();
-               final boolean isSecureMode = isKerberosEnabled(user);
-               final Response response = 
getRoleDownloadResponse(lastKnownRoleVersion, lastActivationTimeInMillis, user, 
isSecureMode);
+               final Response response = 
getRoleDownloadResponse(lastKnownRoleVersion, lastActivationTimeInMillis);
 
                int httpResponseCode = response == null ? -1 : 
response.getStatus();
                String body = null;
@@ -1085,7 +1056,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                                roleDownloadSessionId = null;
                                isValidRoleDownloadSessionCookie = false;
                                body = response.readEntity(String.class);
-                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForRoleDownload(isSecureMode)));
+                               LOG.warn(String.format("Unexpected: Received 
status[%d] with body[%s] form url[%s]", httpResponseCode, body, 
getRelativeURLForRoleDownload(isSecureMode())));
                                break;
                }
 
@@ -1096,7 +1067,7 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                return ret;
        }
 
-       private Response getRoleDownloadResponse(final long 
lastKnownRoleVersion, final long lastActivationTimeInMillis, final 
UserGroupInformation user, final boolean isSecureMode) throws Exception {
+       private Response getRoleDownloadResponse(final long 
lastKnownRoleVersion, final long lastActivationTimeInMillis) throws Exception {
                if (LOG.isDebugEnabled()) {
                        LOG.debug("==> 
RangerAdminJersey2RESTClient.getRoleDownloadResponse(" + lastKnownRoleVersion + 
", " + lastActivationTimeInMillis + ")");
                }
@@ -1109,23 +1080,16 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
                queryParams.put(RangerRESTUtils.REST_PARAM_PLUGIN_ID, 
_pluginId);
                queryParams.put(RangerRESTUtils.REST_PARAM_CLUSTER_NAME, 
_clusterName);
 
-               final String relativeURL = 
getRelativeURLForRoleDownload(isSecureMode);
-
-               if (isSecureMode) {
+               if (isSecureMode()) {
                        if (LOG.isDebugEnabled()) {
-                               LOG.debug("Checking Roles if updated as user : 
" + user);
+                               LOG.debug("Checking Roles if updated as user : 
" + MiscUtil.getUGILoginUser());
                        }
-                       PrivilegedAction<Response> action = new 
PrivilegedAction<Response>() {
-                               public Response run() {
-                                       return get(queryParams, relativeURL, 
roleDownloadSessionId);
-                               }
-                       };
-                       ret = user.doAs(action);
+                       ret = 
MiscUtil.executePrivilegedAction((PrivilegedExceptionAction<Response>) () -> 
get(queryParams, getRelativeURLForRoleDownload(true), roleDownloadSessionId));
                } else {
                        if (LOG.isDebugEnabled()) {
                                LOG.debug("Checking Roles if updated with old 
api call");
                        }
-                       ret = get(queryParams, relativeURL, 
roleDownloadSessionId);
+                       ret = get(queryParams, 
getRelativeURLForRoleDownload(false), roleDownloadSessionId);
                }
 
                if (LOG.isDebugEnabled()) {
@@ -1198,4 +1162,8 @@ public class RangerAdminJersey2RESTClient extends 
AbstractRangerAdminClient {
 
                return ret;
        }
+
+       private boolean isSecureMode() {
+               return isKerberosEnabled(MiscUtil.getUGILoginUser());
+       }
 }
diff --git 
a/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
 
b/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
index 01cb05eab..30ec2c8b4 100644
--- 
a/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
+++ 
b/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
@@ -20,7 +20,7 @@
 package org.apache.ranger.services.storm.client;
 
 import java.io.IOException;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -91,7 +91,7 @@ public class StormClient {
                        LOG.debug("Getting Storm topology list for 
topologyNameMatching : " + topologyNameMatching);
                }
 
-               PrivilegedAction<ArrayList<String>> topologyListGetter = new 
PrivilegedAction<ArrayList<String>>() {
+               PrivilegedExceptionAction<ArrayList<String>> topologyListGetter 
= new PrivilegedExceptionAction<ArrayList<String>>() {
                        @Override
                        public ArrayList<String> run() {
                                if (stormUIUrl == null || 
stormUIUrl.trim().isEmpty()) {
@@ -226,7 +226,7 @@ public class StormClient {
        }
 
        public static <T> T executeUnderKerberos(String userName, String 
password, String lookupPrincipal, String lookupKeytab, String nameRules,
-                       PrivilegedAction<T> action) throws IOException {
+                       PrivilegedExceptionAction<T> action) throws IOException 
{
 
                T ret = null;
 
@@ -276,7 +276,14 @@ public class StormClient {
                        hdpException.generateResponseDataMap(false,
                                        BaseClient.getMessage(se), msgDesc + 
errMessage, null, null);
                        throw hdpException;
+               } catch (Exception excp) {
+                       String msgDesc = "executeUnderKerberos: Exception while 
getting Storm TopologyList.";
+                       HadoopException hdpException = new 
HadoopException(msgDesc, excp);
+                       LOG.error(msgDesc, excp);
 
+                       hdpException.generateResponseDataMap(false,
+                                       BaseClient.getMessage(excp), msgDesc + 
errMessage, null, null);
+                       throw hdpException;
                } finally {
                        if (loginContext != null) {
                                if (subject != null) {
diff --git 
a/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
 
b/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
index ac0069a93..d657dfe6a 100644
--- 
a/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
+++ 
b/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
@@ -20,7 +20,7 @@
 package org.apache.ranger.tagsync.sink.tagadmin;
 
 import java.io.IOException;
-import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
@@ -155,19 +155,14 @@ public class TagAdminRESTSink implements TagSink, 
Runnable {
                                                if (LOG.isDebugEnabled()) {
                                                        LOG.debug("Using 
Principal = " + userGroupInformation.getUserName());
                                                }
-                                               final ServiceTags serviceTag = 
serviceTags;
-                                               ServiceTags ret = 
userGroupInformation.doAs(new PrivilegedAction<ServiceTags>() {
-                                                       @Override
-                                                       public ServiceTags 
run() {
-                                                               try {
-                                                                       return 
uploadServiceTags(serviceTag);
-                                                               } catch 
(Exception e) {
-                                                                       
LOG.error("Upload of service-tags failed with message ", e);
-                                                               }
-                                                               return null;
+                                               return 
userGroupInformation.doAs((PrivilegedExceptionAction<ServiceTags>) () -> {
+                                                       try {
+                                                               return 
uploadServiceTags(serviceTags);
+                                                       } catch (Exception e) {
+                                                               
LOG.error("Upload of service-tags failed with message ", e);
                                                        }
+                                                       return null;
                                                });
-                                               return ret;
                                        } else {
                                                LOG.error("Failed to get 
UserGroupInformation.getLoginUser()");
                                                return null; // This will cause 
retries !!!


Reply via email to