This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch ranger-2.4 in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.4 by this push: new 5f7c50439 RANGER-4235: security-zone persistence optimized to avoid creation of unnecessary ref table entries 5f7c50439 is described below commit 5f7c504392276ab3060dc473908c0aec54ece755 Author: Madhan Neethiraj <mad...@apache.org> AuthorDate: Thu May 11 00:49:07 2023 -0700 RANGER-4235: security-zone persistence optimized to avoid creation of unnecessary ref table entries (cherry picked from commit 54a2cd0a452aa8eeb3e54b3ba4a1ca6150b79791) --- .../apache/ranger/biz/SecurityZoneRefUpdater.java | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneRefUpdater.java b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneRefUpdater.java index a6f553340..0280d674b 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneRefUpdater.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneRefUpdater.java @@ -110,6 +110,8 @@ public class SecurityZoneRefUpdater { daoMgr.getXXSecurityZoneRefService().create(xZoneService); + Set<String> resourceDefNames = new HashSet<>(); + for(Map<String, List<String>> resourceMap:service.getValue().getResources()){//add all resourcedefs in pre defined set for(Map.Entry<String, List<String>> resource : resourceMap.entrySet()) { String resourceName = resource.getKey(); @@ -117,16 +119,20 @@ public class SecurityZoneRefUpdater { continue; } - XXResourceDef xResourceDef = daoMgr.getXXResourceDef().findByNameAndServiceDefId(resourceName, xServiceDef.getId()); + resourceDefNames.add(resourceName); + } + } - XXSecurityZoneRefResource xZoneResource = rangerAuditFields.populateAuditFieldsForCreate(new XXSecurityZoneRefResource()); + for (String resourceName : resourceDefNames) { + XXResourceDef xResourceDef = daoMgr.getXXResourceDef().findByNameAndServiceDefId(resourceName, xServiceDef.getId()); - xZoneResource.setZoneId(zoneId); - xZoneResource.setResourceDefId(xResourceDef.getId()); - xZoneResource.setResourceName(resourceName); + XXSecurityZoneRefResource xZoneResource = rangerAuditFields.populateAuditFieldsForCreate(new XXSecurityZoneRefResource()); - daoMgr.getXXSecurityZoneRefResource().create(xZoneResource); - } + xZoneResource.setZoneId(zoneId); + xZoneResource.setResourceDefId(xResourceDef.getId()); + xZoneResource.setResourceName(resourceName); + + daoMgr.getXXSecurityZoneRefResource().create(xZoneResource); } }