You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2019/10/30 07:32:17 UTC
[ranger] 02/02: RANGER-2595: Improve policy delete performance
using batch delete
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 <an...@outlook.com>
AuthorDate: Sat Sep 28 23:10:46 2019 -0700
RANGER-2595: Improve policy delete performance using batch delete
Signed-off-by: Mehul Parikh <me...@apache.org>
---
.../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>