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

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


The following commit(s) were added to refs/heads/ranger-2.7 by this push:
     new 9b7adca7c RANGER-5003 Fix the bug that deleting a service fails with 
gtid enabled mysql server#3
9b7adca7c is described below

commit 9b7adca7c192d4a443f0983ccd49c5cb6f2432e4
Author: gavin.wang <[email protected]>
AuthorDate: Sat Jul 5 21:18:27 2025 +0800

    RANGER-5003 Fix the bug that deleting a service fails with gtid enabled 
mysql server#3
    
    (cherry picked from commit abef0e25873110371fee7d0351ddb63b8ddeca21)
---
 .../org/apache/ranger/db/XXRMSServiceResourceDao.java     | 15 ++++++++++-----
 .../src/main/resources/META-INF/jpa_named_queries.xml     |  5 ++---
 2 files changed, 12 insertions(+), 8 deletions(-)

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 8a7f08e8d..29cc7d4cc 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
@@ -234,18 +234,23 @@ public List<RangerServiceResource> 
getLlResourceIdForHlResourceId(long hlResourc
        }
 
        public void purge(long serviceId) {
-
-               
getEntityManager().createNamedQuery("XXRMSNotification.deleteByServiceId")
+               List<Long> serviceResourceIds = getEntityManager()
+                               
.createNamedQuery("XXRMSServiceResource.getByServiceId", Long.class)
                                .setParameter("serviceId", serviceId)
-                               .executeUpdate();
+                               .getResultList();
 
-               
getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByServiceId")
+               if (!serviceResourceIds.isEmpty()) {
+                       
getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByServiceResourceIds")
+                                       .setParameter("ids", serviceResourceIds)
+                                       .executeUpdate();
+               }
+
+               
getEntityManager().createNamedQuery("XXRMSNotification.deleteByServiceId")
                                .setParameter("serviceId", serviceId)
                                .executeUpdate();
 
                
getEntityManager().createNamedQuery("XXRMSServiceResource.deleteByServiceId")
                                .setParameter("serviceId", serviceId)
                                .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 6f8657422..6f7108eac 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
@@ -2082,10 +2082,9 @@
                </query>
        </named-query>
 
-       <named-query name="XXRMSResourceMapping.deleteByServiceId">
+       <named-query name="XXRMSResourceMapping.deleteByServiceResourceIds">
                <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)
+                       DELETE FROM XXRMSResourceMapping mapping WHERE 
mapping.hlResourceId IN :ids OR mapping.llResourceId IN :ids
                </query>
        </named-query>
 

Reply via email to