----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/73452/ -----------------------------------------------------------
(Updated Oct. 26, 2021, 11:29 a.m.) Review request for ranger, Ankita Sinha, Dhaval Shah, Dineshkumar Yadav, Gautam Borad, Kishor Gollapalliwar, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Pradeep Agrawal, Ramesh Mani, Sailaja Polavarapu, and Velmurugan Periasamy. Changes ------- Addressing review comments. Bugs: RANGER-3023 https://issues.apache.org/jira/browse/RANGER-3023 Repository: ranger Description ------- GET API /service/xusers/permission takes longer time to load with following number of users and group mappings in db. select count(*) from x_user; 109040 select count(*) from x_portal_user; 109038 select count(*) from x_group_users; 689952 Current problem : For every ModuleDef, db call to fetch all XXUser, XXPortalUser and creating a Map object using xUserService.getXXPortalUserIdXXUserMap() is a costly operation. Similarly for xGroupService.getXXGroupIdXXGroupMap(). Solution: In the following patch, I have overriedden searchModuleDef function in XModuleDefService which will fetch users and groups only once. i.e. Map<Long, XXUser> xXPortalUserIdXXUserMap = xUserService.getXXPortalUserIdXXUserMap(); Map<Long, XXGroup> xXGroupMap = xGroupService.getXXGroupIdXXGroupMap(); These two objects will be passed to an overloaded method populateViewBean() Diffs (updated) ----- security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java 1bd59f8d2 security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java 4c0f33ed9 security-admin/src/main/java/org/apache/ranger/service/XGroupPermissionService.java 13d0a8fcb security-admin/src/main/java/org/apache/ranger/service/XGroupService.java d615d1775 security-admin/src/main/java/org/apache/ranger/service/XModuleDefService.java d5ca38548 security-admin/src/main/java/org/apache/ranger/service/XUserPermissionService.java 47a1fadb7 security-admin/src/main/java/org/apache/ranger/service/XUserService.java 9647096fe security-admin/src/main/resources/META-INF/jpa_named_queries.xml 96dc0df8e Diff: https://reviews.apache.org/r/73452/diff/3/ Changes: https://reviews.apache.org/r/73452/diff/2-3/ Testing ------- xUserService.getXXPortalUserIdXXUserMap() takes approximately 2000 milliseconds. xGroupService.getXXGroupIdXXGroupMap() takes approximately 500 milliseconds. Before patch, XModuleDefServiceBase.searchModuleDef() took 30252 milliseconds. After patch, XModuleDefService.searchModuleDef() took 13766 milliseconds. GET API /service/xusers/permission response improved by ~16 seconds for the above mentioned dataset. Thanks, Mahesh Bandal