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

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

commit 3883fd130bdb81c7b285dda0511ace7ba8aa2e66
Author: Pradeep AgrawaL <[email protected]>
AuthorDate: Thu Sep 18 12:09:25 2025 +0530

    RANGER-5260: Improve performance of MetricUtil for policies count
---
 .../apache/ranger/patch/cliutil/MetricUtil.java    | 75 +---------------------
 .../ranger/patch/cliutil/TestMetricUtil.java       |  4 +-
 2 files changed, 4 insertions(+), 75 deletions(-)

diff --git 
a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/MetricUtil.java 
b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/MetricUtil.java
index 92dacca14..5a83f2f06 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/MetricUtil.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/MetricUtil.java
@@ -16,7 +16,6 @@
  */
 package org.apache.ranger.patch.cliutil;
 
-import org.apache.commons.lang.StringUtils;
 import org.apache.ranger.audit.provider.MiscUtil;
 import org.apache.ranger.authorization.utils.JsonUtils;
 import org.apache.ranger.biz.AssetMgr;
@@ -30,7 +29,6 @@
 import org.apache.ranger.common.SearchCriteria;
 import org.apache.ranger.patch.BaseLoader;
 import org.apache.ranger.plugin.model.RangerPolicy;
-import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem;
 import org.apache.ranger.plugin.model.RangerService;
 import org.apache.ranger.plugin.model.RangerServiceDef;
 import 
org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef;
@@ -390,76 +388,9 @@ private void metricCalculation(String caseValue) {
                     break;
                 case "denyconditions":
                     try {
-                        SearchFilter policyFilter1 = new SearchFilter();
-
-                        policyFilter1.setMaxRows(200);
-                        policyFilter1.setStartIndex(0);
-                        policyFilter1.setGetCount(true);
-                        policyFilter1.setSortBy("serviceId");
-                        policyFilter1.setSortType("asc");
-
-                        int                     denyCount           = 0;
-                        Map<String, Integer>    denyconditionsonMap = new 
HashMap<>();
-                        PList<RangerServiceDef> paginatedSvcDefs    = 
svcStore.getPaginatedServiceDefs(policyFilter1);
-
-                        if (paginatedSvcDefs != null) {
-                            List<RangerServiceDef> rangerServiceDefs = 
paginatedSvcDefs.getList();
-
-                            if (rangerServiceDefs != null && 
!rangerServiceDefs.isEmpty()) {
-                                for (RangerServiceDef rangerServiceDef : 
rangerServiceDefs) {
-                                    if (rangerServiceDef != null) {
-                                        String serviceDef = 
rangerServiceDef.getName();
-
-                                        if (!StringUtils.isEmpty(serviceDef)) {
-                                            
policyFilter1.setParam("serviceType", serviceDef);
-                                            
policyFilter1.setParam("denyCondition", "true");
-
-                                            PList<RangerPolicy> policiesList = 
svcStore.getPaginatedPolicies(policyFilter1);
-
-                                            if (policiesList != null && 
policiesList.getListSize() > 0) {
-                                                int policyListCount = 
policiesList.getListSize();
-
-                                                if (policyListCount > 0 && 
policiesList.getList() != null) {
-                                                    List<RangerPolicy> 
policies = policiesList.getList();
-
-                                                    for (RangerPolicy policy : 
policies) {
-                                                        if (policy != null) {
-                                                            
List<RangerPolicyItem> policyItem = policy.getDenyPolicyItems();
-
-                                                            if (policyItem != 
null && !policyItem.isEmpty()) {
-                                                                if 
(denyconditionsonMap.get(serviceDef) != null) {
-                                                                    denyCount 
= denyconditionsonMap.get(serviceDef) + denyCount + policyItem.size();
-                                                                } else {
-                                                                    denyCount 
= denyCount + policyItem.size();
-                                                                }
-                                                            }
-
-                                                            
List<RangerPolicyItem> policyItemExclude = policy.getDenyExceptions();
-                                                            if 
(policyItemExclude != null && !policyItemExclude.isEmpty()) {
-                                                                if 
(denyconditionsonMap.get(serviceDef) != null) {
-                                                                    denyCount 
= denyconditionsonMap.get(serviceDef) + denyCount + policyItemExclude.size();
-                                                                } else {
-                                                                    denyCount 
= denyCount + policyItemExclude.size();
-                                                                }
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-
-                                            
policyFilter1.removeParam("serviceType");
-                                        }
-
-                                        denyconditionsonMap.put(serviceDef, 
denyCount);
-
-                                        denyCount = 0;
-                                    }
-                                }
-                            }
-                        }
-
-                        String jsonContextDenyCondtionOn = 
JsonUtils.objectToJson(denyconditionsonMap);
-                        System.out.println(jsonContextDenyCondtionOn);
+                        Map<String, Long>    denyconditionsonMap = 
svcStore.getPolicyCountByDenyConditionsAndServiceDef();
+                        String jsonContextDenyCondition = 
JsonUtils.objectToJson(denyconditionsonMap);
+                        System.out.println(jsonContextDenyCondition);
                     } catch (Exception e) {
                         logger.error("Error calculating Metric for 
denyconditions : {}", e.getMessage());
                     }
diff --git 
a/security-admin/src/test/java/org/apache/ranger/patch/cliutil/TestMetricUtil.java
 
b/security-admin/src/test/java/org/apache/ranger/patch/cliutil/TestMetricUtil.java
index fa0ce8688..70f8eba98 100644
--- 
a/security-admin/src/test/java/org/apache/ranger/patch/cliutil/TestMetricUtil.java
+++ 
b/security-admin/src/test/java/org/apache/ranger/patch/cliutil/TestMetricUtil.java
@@ -216,7 +216,6 @@ public void testExecLoad_denyconditions() throws Exception {
         PList<RangerServiceDef> defs = new PList<>();
         defs.setList(Collections.singletonList(def));
         defs.setTotalCount(1L);
-        
Mockito.when(svcStore.getPaginatedServiceDefs(Mockito.any(SearchFilter.class))).thenReturn(defs);
 
         RangerPolicy policy = new RangerPolicy();
         policy.setDenyPolicyItems(Collections.singletonList(new 
RangerPolicy.RangerPolicyItem()));
@@ -224,10 +223,9 @@ public void testExecLoad_denyconditions() throws Exception 
{
         PList<RangerPolicy> policyList = new PList<>();
         policyList.setList(Collections.singletonList(policy));
         policyList.setTotalCount(1L);
-        
Mockito.when(svcStore.getPaginatedPolicies(Mockito.any(SearchFilter.class))).thenReturn(policyList);
 
         metricUtil.execLoad();
 
-        Mockito.verify(svcStore, 
Mockito.atLeast(1)).getPaginatedServiceDefs(Mockito.any(SearchFilter.class));
+        Mockito.verify(svcStore, 
Mockito.atLeast(1)).getPolicyCountByDenyConditionsAndServiceDef();
     }
 }

Reply via email to