This is an automated email from the ASF dual-hosted git repository. mehul pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ranger.git
commit b348291eaeeefc3723bb5507d3770b463544c24a Author: Andrew <[email protected]> AuthorDate: Sat Sep 28 23:10:46 2019 -0700 RANGER-2595: Improve policy delete performance using batch delete Signed-off-by: Mehul Parikh <[email protected]> --- .../org/apache/ranger/biz/PolicyRefUpdater.java | 49 ++++------------------ .../apache/ranger/db/XXPolicyRefAccessTypeDao.java | 8 ++++ .../apache/ranger/db/XXPolicyRefConditionDao.java | 8 ++++ .../ranger/db/XXPolicyRefDataMaskTypeDao.java | 9 ++++ .../org/apache/ranger/db/XXPolicyRefGroupDao.java | 8 ++++ .../apache/ranger/db/XXPolicyRefResourceDao.java | 9 ++++ .../org/apache/ranger/db/XXPolicyRefRoleDao.java | 8 ++++ .../org/apache/ranger/db/XXPolicyRefUserDao.java | 8 ++++ .../main/resources/META-INF/jpa_named_queries.xml | 28 +++++++++++++ 9 files changed, 93 insertions(+), 42 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java b/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java index 055cd38..7b2356b 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java @@ -26,13 +26,6 @@ import java.util.Set; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.ranger.db.RangerDaoManager; -import org.apache.ranger.db.XXPolicyRefAccessTypeDao; -import org.apache.ranger.db.XXPolicyRefConditionDao; -import org.apache.ranger.db.XXPolicyRefDataMaskTypeDao; -import org.apache.ranger.db.XXPolicyRefGroupDao; -import org.apache.ranger.db.XXPolicyRefResourceDao; -import org.apache.ranger.db.XXPolicyRefRoleDao; -import org.apache.ranger.db.XXPolicyRefUserDao; import org.apache.ranger.entity.XXAccessTypeDef; import org.apache.ranger.entity.XXDataMaskTypeDef; import org.apache.ranger.entity.XXGroup; @@ -252,41 +245,13 @@ public class PolicyRefUpdater { return false; } - XXPolicyRefResourceDao xPolResDao = daoMgr.getXXPolicyRefResource(); - XXPolicyRefRoleDao xPolRoleDao = daoMgr.getXXPolicyRefRole(); - XXPolicyRefGroupDao xPolGroupDao = daoMgr.getXXPolicyRefGroup(); - XXPolicyRefUserDao xPolUserDao = daoMgr.getXXPolicyRefUser(); - XXPolicyRefAccessTypeDao xPolAccessDao = daoMgr.getXXPolicyRefAccessType(); - XXPolicyRefConditionDao xPolCondDao = daoMgr.getXXPolicyRefCondition(); - XXPolicyRefDataMaskTypeDao xPolDataMaskDao = daoMgr.getXXPolicyRefDataMaskType(); - - for (XXPolicyRefResource resource : xPolResDao.findByPolicyId(policyId)) { - xPolResDao.remove(resource); - } - - for(XXPolicyRefRole role : xPolRoleDao.findByPolicyId(policyId)) { - xPolRoleDao.remove(role); - } - - for(XXPolicyRefGroup group : xPolGroupDao.findByPolicyId(policyId)) { - xPolGroupDao.remove(group); - } - - for(XXPolicyRefUser user : xPolUserDao.findByPolicyId(policyId)) { - xPolUserDao.remove(user); - } - - for(XXPolicyRefAccessType access : xPolAccessDao.findByPolicyId(policyId)) { - xPolAccessDao.remove(access); - } - - for(XXPolicyRefCondition condVal : xPolCondDao.findByPolicyId(policyId)) { - xPolCondDao.remove(condVal); - } - - for(XXPolicyRefDataMaskType dataMask : xPolDataMaskDao.findByPolicyId(policyId)) { - xPolDataMaskDao.remove(dataMask); - } + daoMgr.getXXPolicyRefResource().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefRole().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefGroup().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefUser().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefAccessType().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefCondition().deleteByPolicyId(policyId); + daoMgr.getXXPolicyRefDataMaskType().deleteByPolicyId(policyId); return true; } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefAccessTypeDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefAccessTypeDao.java index 1ef01bb..b9a60cb 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefAccessTypeDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefAccessTypeDao.java @@ -97,4 +97,12 @@ public class XXPolicyRefAccessTypeDao extends BaseDao<XXPolicyRefAccessType> { return ret; } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefAccessType.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefConditionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefConditionDao.java index 2c04ab4..e14bc14 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefConditionDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefConditionDao.java @@ -108,4 +108,12 @@ public class XXPolicyRefConditionDao extends BaseDao<XXPolicyRefCondition> { return ret; } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefCondition.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefDataMaskTypeDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefDataMaskTypeDao.java index 258e3b0..7e7b8d4 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefDataMaskTypeDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefDataMaskTypeDao.java @@ -83,4 +83,13 @@ public class XXPolicyRefDataMaskTypeDao extends BaseDao<XXPolicyRefDataMaskType> } return ret; } + + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefDataMaskType.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefGroupDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefGroupDao.java index 08829d4..5f9d9ed 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefGroupDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefGroupDao.java @@ -96,4 +96,12 @@ public class XXPolicyRefGroupDao extends BaseDao<XXPolicyRefGroup>{ return ret; } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefGroup.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefResourceDao.java index e259ee8..0ea7de9 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefResourceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefResourceDao.java @@ -62,6 +62,15 @@ public class XXPolicyRefResourceDao extends BaseDao<XXPolicyRefResource>{ } } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefResource.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } + @SuppressWarnings("unchecked") public List<RangerPolicyRetriever.PolicyTextNameMap> findUpdatedResourceNamesByPolicy(Long policyId) { List<RangerPolicyRetriever.PolicyTextNameMap> ret = new ArrayList<>(); diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefRoleDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefRoleDao.java index dbcacb7..3ae7e7a 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefRoleDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefRoleDao.java @@ -108,5 +108,13 @@ public class XXPolicyRefRoleDao extends BaseDao<XXPolicyRefRole>{ return ret; } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefRole.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefUserDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefUserDao.java index f7b6131..518139a 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefUserDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyRefUserDao.java @@ -108,4 +108,12 @@ public class XXPolicyRefUserDao extends BaseDao<XXPolicyRefUser>{ return ret; } + public void deleteByPolicyId(Long policyId) { + if(policyId == null) { + return; + } + getEntityManager() + .createNamedQuery("XXPolicyRefUser.deleteByPolicyId", tClass) + .setParameter("policyId", policyId).executeUpdate(); + } } diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index bc8062c..b619b7a 100755 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -592,6 +592,10 @@ <query>select obj from XXPolicyRefAccessType obj where obj.accessDefId = :accessDefId</query> </named-query> + <named-query name="XXPolicyRefAccessType.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefAccessType obj WHERE obj.policyId = :policyId</query> + </named-query> + <!-- XXPolicyRefCondition --> <named-query name="XXPolicyRefCondition.findByPolicyId"> <query>select obj from XXPolicyRefCondition obj where obj.policyId = :policyId </query> @@ -601,6 +605,10 @@ <query>select obj from XXPolicyRefCondition obj where obj.conditionName = :conditionName</query> </named-query> + <named-query name="XXPolicyRefCondition.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefCondition obj WHERE obj.policyId = :policyId </query> + </named-query> + <!-- XXPolicyRefGroup --> <named-query name="XXPolicyRefGroup.findByPolicyId"> <query>select obj from XXPolicyRefGroup obj where obj.policyId = :policyId </query> @@ -615,6 +623,10 @@ <query>select obj from XXPolicyRefGroup obj where obj.groupId = :groupId and obj.policyId = :policyId </query> </named-query> + <named-query name="XXPolicyRefGroup.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefGroup obj WHERE obj.policyId = :policyId</query> + </named-query> + <named-query name="XXPolicyRefCondition.findByConditionDefIdAndPolicyId"> <query>select obj from XXPolicyRefCondition obj where obj.conditionDefId = :conditionDefId and obj.policyId = :policyId </query> </named-query> @@ -766,6 +778,10 @@ <query>select obj from XXPolicyRefDataMaskType obj where obj.dataMaskTypeName = :dataMaskTypeName</query> </named-query> + <named-query name="XXPolicyRefDataMaskType.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefDataMaskType obj WHERE obj.policyId = :policyId </query> + </named-query> + <!-- XXPolicyRefResource --> <named-query name="XXPolicyRefResource.findByPolicyId"> <query>select obj from XXPolicyRefResource obj where obj.policyId = :policyId </query> @@ -775,6 +791,10 @@ <query>select obj from XXPolicyRefResource obj where obj.resourceDefId = :resourceDefId</query> </named-query> + <named-query name="XXPolicyRefResource.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefResource obj WHERE obj.policyId = :policyId </query> + </named-query> + <!-- XXPolicyRefUser --> <named-query name="XXPolicyRefUser.findByPolicyId"> <query>select obj from XXPolicyRefUser obj where obj.policyId = :policyId </query> @@ -788,6 +808,10 @@ <query>select obj from XXPolicyRefUser obj where obj.userId = :userId</query> </named-query> + <named-query name="XXPolicyRefUser.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefUser obj WHERE obj.policyId = :policyId</query> + </named-query> + <!-- XXPolicyItemCondition --> <named-query name="XXPolicyItemCondition.findByPolicyId"> @@ -1587,6 +1611,10 @@ <query>select count(obj.policyId) from XXPolicyRefRole obj where obj.roleName = :roleName </query> </named-query> + <named-query name="XXPolicyRefRole.deleteByPolicyId"> + <query>DELETE FROM XXPolicyRefRole obj WHERE obj.policyId = :policyId </query> + </named-query> + <!-- XXTagChangeLog --> <named-query name="XXTagChangeLog.findSinceVersion"> <query>
