You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ab...@apache.org on 2020/10/14 04:42:10 UTC

[ranger] branch master updated: RANGER-3016: Ranger service/ repo delete improvements - Part 2 (For chained service)

This is an automated email from the ASF dual-hosted git repository.

abhay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new ac24d33  RANGER-3016:  Ranger service/ repo delete improvements - Part 2 (For chained service)
ac24d33 is described below

commit ac24d33f9786b65a3340b97bfc8f2deeb4cd7ab4
Author: Abhay Kulkarni <ab...@apache.org>
AuthorDate: Tue Oct 13 21:29:11 2020 -0700

    RANGER-3016:  Ranger service/ repo delete improvements - Part 2 (For chained service)
---
 .../java/org/apache/ranger/biz/ServiceDBStore.java |  3 ++
 .../apache/ranger/db/XXRMSServiceResourceDao.java  | 33 +++++++++-------------
 .../main/resources/META-INF/jpa_named_queries.xml  | 19 ++++++++++---
 .../org/apache/ranger/biz/TestServiceDBStore.java  |  3 ++
 4 files changed, 35 insertions(+), 23 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 3f3ec47..3baee02 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -1798,6 +1798,9 @@ public class ServiceDBStore extends AbstractServiceStore {
 			configDao.remove(configMap);
 		}
 
+		// Purge x_rms data
+		daoMgr.getXXRMSServiceResource().purge(service.getId());
+
 		Long version = service.getVersion();
 		if(version == null) {
 			version = Long.valueOf(1);
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXRMSServiceResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXRMSServiceResourceDao.java
index 3a4f14a..8938e6d 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXRMSServiceResourceDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXRMSServiceResourceDao.java
@@ -39,8 +39,8 @@ import org.apache.ranger.common.DateUtil;
 import org.apache.ranger.common.GUIDUtil;
 import org.apache.ranger.common.db.BaseDao;
 import org.apache.ranger.entity.XXService;
-import org.apache.ranger.plugin.model.RangerPolicy;
 import org.apache.ranger.entity.XXRMSServiceResource;
+import org.apache.ranger.plugin.model.RangerPolicy;
 import org.apache.ranger.plugin.model.RangerServiceResource;
 import org.springframework.stereotype.Service;
 
@@ -242,24 +242,19 @@ public class XXRMSServiceResourceDao extends BaseDao<XXRMSServiceResource> {
 		return ret;
 	}
 
-	public void purge(long llServiceId, long hlServiceId) {
-		List<Long> list = getEntityManager()
-				.createNamedQuery("XXRMSServiceResource.getByLlOrHlServiceId", Long.class)
-				.setParameter("llServiceId", llServiceId)
-				.setParameter("hlServiceId", hlServiceId)
-				.getResultList();
-
-		if (CollectionUtils.isNotEmpty(list)) {
-			for (long id : list) {
-				getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByLlOrHlResourceId")
-						.setParameter("resourceId", id)
-						.executeUpdate();
-			}
+	public void purge(long serviceId) {
+
+		getEntityManager().createNamedQuery("XXRMSNotification.deleteByServiceId")
+				.setParameter("serviceId", serviceId)
+				.executeUpdate();
+
+		getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByServiceId")
+				.setParameter("serviceId", serviceId)
+				.executeUpdate();
+
+		getEntityManager().createNamedQuery("XXRMSServiceResource.deleteByServiceId")
+				.setParameter("serviceId", serviceId)
+				.executeUpdate();
 
-			getEntityManager().createNamedQuery("XXRMSServiceResource.deleteByLlOrHlServiceId")
-					.setParameter("llServiceId", llServiceId)
-					.setParameter("hlServiceId", hlServiceId)
-					.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 a8f5818..a490e76 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
@@ -1718,6 +1718,13 @@
 		</query>
 	</named-query>
 
+	<named-query name="XXRMSResourceMapping.deleteByServiceId">
+		<query>
+			DELETE FROM XXRMSResourceMapping mapping WHERE mapping.hlResourceId in (select obj.id from XXRMSServiceResource obj where obj.serviceId = :serviceId) OR
+			mapping.llResourceId in (select obj.id from XXRMSServiceResource obj where obj.serviceId = :serviceId)
+		</query>
+	</named-query>
+
 	<named-query name="XXRMSNotification.getMaxIdOfNotifications">
 		<query>select max(obj.notificationId) from XXRMSNotification obj where obj.llServiceId = :llServiceId and obj.hlServiceId = :hlServiceId</query>
 	</named-query>
@@ -1737,6 +1744,10 @@
 		</query>
 	</named-query>
 
+	<named-query name="XXRMSNotification.deleteByServiceId">
+		<query>DELETE from XXRMSNotification obj where obj.llServiceId = :serviceId or obj.hlServiceId = :serviceId</query>
+	</named-query>
+
 	<named-query name="XXRMSServiceResource.getLlResourceIdForHlResourceId">
 		<query>select obj from XXRMSServiceResource obj, XXRMSNotification notification where obj.id = notification.llResourceId and
 			notification.changeType = 'add' and notification.hlResourceId = :hlResourceId and notification.notificationId > :lastKnownIndex
@@ -1749,14 +1760,14 @@
 		</query>
 	</named-query>
 
-	<named-query name="XXRMSServiceResource.getByLlOrHlServiceId">
-		<query>select obj.id from XXRMSServiceResource obj where obj.serviceId = :llServiceId or obj.serviceId = :hlServiceId
+	<named-query name="XXRMSServiceResource.getByServiceId">
+		<query>select obj.id from XXRMSServiceResource obj where obj.serviceId = :serviceId
 			order by obj.id
 		</query>
 	</named-query>
 
-	<named-query name="XXRMSServiceResource.deleteByLlOrHlServiceId">
-		<query>delete from XXRMSServiceResource obj where obj.serviceId = :llServiceId or obj.serviceId = :hlServiceId</query>
+	<named-query name="XXRMSServiceResource.deleteByServiceId">
+		<query>delete from XXRMSServiceResource obj where obj.serviceId = :serviceId</query>
 	</named-query>
 
 	<named-query name="XXRMSServiceResource.findByServiceAndResourceSignature">
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java
index 9677b4d..c4e7de2 100644
--- a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java
@@ -1227,6 +1227,7 @@ public class TestServiceDBStore {
 				.mock(XXServiceConfigMapDao.class);
 		XXPolicyLabelMapDao xPolicyLabelMapDao = Mockito.mock(XXPolicyLabelMapDao.class);
 		XXSecurityZoneDao xSecurityZoneDao = Mockito.mock(XXSecurityZoneDao.class);
+		XXRMSServiceResourceDao xRMSServiceResourceDao = Mockito.mock(XXRMSServiceResourceDao.class);
 
         RangerService rangerService = rangerService();
 		RangerPolicy rangerPolicy = rangerPolicy();
@@ -1394,6 +1395,8 @@ public class TestServiceDBStore {
 		Mockito.when(daoManager.getXXPolicyLabelMap()).thenReturn(xPolicyLabelMapDao);
 		Mockito.when(xPolicyLabelMapDao.findByPolicyId(rangerPolicy.getId())).thenReturn(ListUtils.EMPTY_LIST);
 
+		Mockito.when(daoManager.getXXRMSServiceResource()).thenReturn(xRMSServiceResourceDao);
+
 		Mockito.when(!bizUtil.hasAccess(xService, null)).thenReturn(true);
         serviceDBStore.deleteService(Id);
 		Mockito.verify(svcService).delete(rangerService);