-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/73452/
-----------------------------------------------------------
(Updated July 20, 2021, 1:52 p.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.
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
-----
security-admin/src/main/java/org/apache/ranger/service/XModuleDefService.java
d5ca38548
Diff: https://reviews.apache.org/r/73452/diff/2/
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