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

maheshbandal 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 abef0e258 RANGER-5003 Fix the bug that deleting a service fails with 
gtid enabled mysql server#3
abef0e258 is described below

commit abef0e25873110371fee7d0351ddb63b8ddeca21
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
---
 .../java/org/apache/ranger/db/XXRMSServiceResourceDao.java    | 11 +++++++++--
 .../src/main/resources/META-INF/jpa_named_queries.xml         |  6 ++----
 2 files changed, 11 insertions(+), 6 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 6ea6ec84e..7bd24bb9a 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
@@ -247,11 +247,18 @@ 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)
+                .getResultList();
+
+        if (!serviceResourceIds.isEmpty()) {
+            
getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByServiceIds")
+                .setParameter("ids", serviceResourceIds)
                 .executeUpdate();
+        }
 
-        
getEntityManager().createNamedQuery("XXRMSResourceMapping.deleteByServiceId")
+        
getEntityManager().createNamedQuery("XXRMSNotification.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 1cc89ee4a..8f61e66e3 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
@@ -2101,10 +2101,8 @@
                </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)
+       <named-query name="XXRMSResourceMapping.deleteByServiceIds">
+               <query>DELETE FROM XXRMSResourceMapping mapping WHERE 
mapping.hlResourceId IN :ids OR mapping.llResourceId IN :ids
                </query>
        </named-query>
 

Reply via email to