-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/75197/
-----------------------------------------------------------

Review request for ranger, Anand Nadar, Asit Vadhavkar, madhan, Madhan 
Neethiraj, Monika Kachhadiya, and Siddhesh Phatak.


Bugs: https://issues.apache.org/jira/browse/RANGER-4907
    
https://issues.apache.org/jira/browse/https://issues.apache.org/jira/browse/RANGER-4907


Repository: ranger


Description
-------

If a user has large number of associations with groups, policies, the user 
delete operation can take large amount of time, especially while updating the 
policies. Since to update a policy, we have large number of validations in 
place. This can be even worse, if multiple user delete requests are received at 
the same time. We can add following optimizations to improve the user delete 
performance:

1.Remove foreign key relation of x_user with x_auth_sess, with this we can skip 
updating the user references in x_auth_sess when a user is deleted.
2.Currently all policy reference for a user are cleaned up and updated ones are 
added again. We can remove policy reference only for the user being deleted.
3.Added new policy update method, take list of policies, update only the 
policyText and push policy updates in bulk.


Diffs
-----

  security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql 80af2c8ce 
  security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql 
8d528e4ee 
  security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql 
6bb9c525a 
  
security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql 
a37c9eb8e 
  security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql 
151f6804b 
  security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java 
ed0992604 
  security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java 
c934fdd7c 
  security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java 5ba6c14b9 
  security-admin/src/main/java/org/apache/ranger/db/XXAuthSessionDao.java 
645c27cbd 
  security-admin/src/main/java/org/apache/ranger/db/XXGroupUserDao.java 
76cdd93f5 
  security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefGroupDao.java 
3ce371306 
  security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefRoleDao.java 
29d2bc4c9 
  security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefUserDao.java 
07d94ceb9 
  
security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java 
9ab886e43 
  security-admin/src/main/resources/META-INF/jpa_named_queries.xml 1672c148e 
  security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java 
de342e994 


Diff: https://reviews.apache.org/r/75197/diff/1/


Testing
-------

Validations done with PostgresDB:
        All the existing JUnits are passing
        Case: Delete User 
                1.Time taken to delete a user with large no of linked groups 
and policies, before and after optmization
                        Without optmization
                                Groups: 10k, Policies: 10k, User deletion time: 
4.32 min
                                Version:
                                        Before update:
                                                Policy: 1011
                                                Userstore: 2590
                                        After update:
                                                Policy: 2011
                                                Userstore: 2590
                        With optmization
                                Groups: 10k, Policies: 10k, User deletion time: 
7.81 sec
                                Version:
                                        Before update:
                                                Policy: 10011
                                                Userstore: 10003
                                        After update:
                                                Policy: 10012
                                                Userstore: 10003
                2. Confirm policy version is incremented
                3. Confirm admin audit is generated for the user deletion
                        Admin audits generated for user and user profile 
deletion
                
        Case: Delete Group
                1.Time taken to delete a group with large no of linked users 
and policies, before and after optmization
                        Without optmization
                                Users: 1.5k, Policies: 1k, Group deletion time: 
6.59 min
                                Version:
                                        Before update:
                                                Policy: 1011
                                                Userstore: 1589
                                        After update:
                                                Policy: 2011
                                                Userstore: 1589
                        With optmization
                                Users: 10k, Policies: 10k, Group deletion time: 
6.37 sec
                                Version:
                                        Before update:
                                                Policy: 10011
                                                Userstore: 20005
                                        After update:
                                                Policy: 10012
                                                Userstore: 10003
                2. Confirm policy version is incremented
                3. Confirm admin audit is generated for the group deletion
                        Admin audits generated for group deletion


Thanks,

Subhrat Chaudhary

Reply via email to