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(); } }
