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

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


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

commit 6ca25d5a5b19bdc136a61a145f01120ef0f4d437
Author: Abhay Kulkarni <[email protected]>
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 7d9e145..5fad690 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
@@ -1701,6 +1701,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>
@@ -1720,6 +1727,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
@@ -1732,14 +1743,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);

Reply via email to