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

dhavalshah9131 pushed a commit to branch RANGER-5199
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 504c8b8f10721036a32d7cbcf85ef7568eb47858
Author: Madhan Neethiraj <mad...@apache.org>
AuthorDate: Tue Apr 29 07:49:47 2025 -0700

    RANGER-5185: fix potential NPE in references to 
RangerBasePlugin.policyEngine (#555)
---
 .../ranger/plugin/service/RangerBasePlugin.java    | 26 +++++++++-------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
index 495ce3b83..54fcaa09d 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
@@ -611,7 +611,7 @@ public void setPolicies(ServicePolicies policies) {
             } else {
                 LOG.warn("Leaving current policy engine as-is");
                 LOG.warn("Policies are not saved to cache. policyVersion in 
the policy-cache may be different than in Ranger-admin, even though the 
policies are the same!");
-                LOG.warn("Ranger-PolicyVersion:[{}], 
Cached-PolicyVersion:[{}]", policies != null ? policies.getPolicyVersion() : 
-1L, this.policyEngine != null ? this.policyEngine.getPolicyVersion() : -1L);
+                LOG.warn("Ranger-PolicyVersion:[{}], 
Cached-PolicyVersion:[{}]", policies != null ? policies.getPolicyVersion() : 
-1L, getPoliciesVersion());
             }
         } catch (Exception e) {
             LOG.error("setPolicies: policy engine initialization failed!  
Leaving current policy engine as-is. Exception : ", e);
@@ -883,14 +883,11 @@ public RangerRoles getRangerRoles() {
     }
 
     public Set<RangerRole> getRangerRoleForPrincipal(String principal, String 
type) {
-        Set<RangerRole>          ret         = new HashSet<>();
-        Set<RangerRole>          rangerRoles = null;
+        Set<RangerRole>          ret          = new HashSet<>();
+        RangerPolicyEngine       policyEngine = this.policyEngine;
+        RangerRoles              roles        = policyEngine != null ? 
policyEngine.getRangerRoles() : null;
+        Set<RangerRole>          rangerRoles  = roles != null ? 
roles.getRangerRoles() : null;
         Map<String, Set<String>> roleMapping = null;
-        RangerRoles              roles       = getRangerRoles();
-
-        if (roles != null) {
-            rangerRoles = roles.getRangerRoles();
-        }
 
         if (rangerRoles != null) {
             RangerPluginContext rangerPluginContext = 
policyEngine.getPluginContext();
@@ -930,6 +927,7 @@ public Set<RangerRole> getRangerRoleForPrincipal(String 
principal, String type)
                 }
             }
         }
+
         return ret;
     }
 
@@ -1063,18 +1061,14 @@ public void refreshPoliciesAndTags() {
         LOG.debug("==> refreshPoliciesAndTags()");
 
         try {
-            RangerPolicyEngine policyEngine = this.policyEngine;
+            long oldPolicyVersion = getPoliciesVersion();
 
             // Synch-up policies
-            long oldPolicyVersion = policyEngine.getPolicyVersion();
-
             if (refresher != null) {
                 refresher.syncPoliciesWithAdmin(accessTrigger);
             }
 
-            policyEngine = this.policyEngine; // might be updated in 
syncPoliciesWithAdmin()
-
-            long newPolicyVersion = policyEngine.getPolicyVersion();
+            long newPolicyVersion = getPoliciesVersion();
 
             if (oldPolicyVersion == newPolicyVersion) {
                 // Synch-up tags
@@ -1196,7 +1190,9 @@ public Map<String, String> getServiceConfigs() {
     }
 
     public Long getPolicyVersion() {
-        return this.policyEngine == null ? -1L : 
this.policyEngine.getPolicyVersion();
+        RangerPolicyEngine policyEngine = this.policyEngine;
+
+        return policyEngine == null ? -1L : policyEngine.getPolicyVersion();
     }
 
     protected RangerPolicyEngine getPolicyEngine() {

Reply via email to