This is an automated email from the ASF dual-hosted git repository. dineshkumar pushed a commit to branch sandbox/dineshkumar-yadav/RANGER-5465 in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 0f79c4280c81ccf00f041b9589814202be528846 Author: Dineshkumar Yadav <[email protected]> AuthorDate: Mon Feb 2 16:26:23 2026 +0530 RANGER-5465: Handle upgrade failure caused by the Java patch during the Ranger DB upgrade --- .../main/java/org/apache/ranger/db/XXSecurityZoneDao.java | 15 +++++++++++++++ .../PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java | 7 ++++--- ...ql_058_ForUpdateToUniqueResoureceSignature_J10053.java | 8 ++++---- .../src/main/resources/META-INF/jpa_named_queries.xml | 6 ++++++ .../TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java | 2 +- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneDao.java index 9ff812d60..9f8e6ea5f 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneDao.java @@ -173,4 +173,19 @@ public List<XXSecurityZone> getAllZoneIdNames() { return securityZoneList; } + + public String findZoneNameByZoneId(Long zoneId) { + if (zoneId == null) { + return null; + } + + try { + return getEntityManager() + .createNamedQuery("XXSecurityZone.findZoneNameByZoneId", String.class) + .setParameter("zoneId", zoneId) + .getSingleResult(); + } catch (NoResultException e) { + return null; + } + } } diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java index 8282db56a..30025181e 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java @@ -18,6 +18,7 @@ package org.apache.ranger.patch; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.ranger.authorization.utils.JsonUtils; import org.apache.ranger.biz.ServiceDBStore; import org.apache.ranger.common.GUIDUtil; @@ -179,10 +180,10 @@ private RangerPolicy getPolicy(final XXPolicy xPolicy) { ret.setVersion(xPolicy.getVersion()); ret.setPolicyType(xPolicy.getPolicyType() == null ? RangerPolicy.POLICY_TYPE_ACCESS : xPolicy.getPolicyType()); - XXSecurityZone xSecurityZone = daoMgr.getXXSecurityZoneDao().findByZoneId(xPolicy.getZoneId()); + String securityZoneName = daoMgr.getXXSecurityZoneDao().findZoneNameByZoneId(xPolicy.getZoneId()); - if (xSecurityZone != null) { - ret.setZoneName(xSecurityZone.getName()); + if (StringUtils.isNotEmpty(securityZoneName)) { + ret.setZoneName(securityZoneName); } } } else { diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_058_ForUpdateToUniqueResoureceSignature_J10053.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_058_ForUpdateToUniqueResoureceSignature_J10053.java index 4ca27766e..8595b1d0b 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_058_ForUpdateToUniqueResoureceSignature_J10053.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_058_ForUpdateToUniqueResoureceSignature_J10053.java @@ -18,6 +18,7 @@ package org.apache.ranger.patch; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.ranger.authorization.utils.JsonUtils; import org.apache.ranger.biz.ServiceDBStore; import org.apache.ranger.common.RangerFactory; @@ -25,7 +26,6 @@ import org.apache.ranger.db.XXPolicyLabelMapDao; import org.apache.ranger.entity.XXPolicy; import org.apache.ranger.entity.XXPolicyLabelMap; -import org.apache.ranger.entity.XXSecurityZone; import org.apache.ranger.plugin.model.RangerPolicy; import org.apache.ranger.plugin.model.RangerPolicyResourceSignature; import org.apache.ranger.util.CLIUtil; @@ -223,10 +223,10 @@ private RangerPolicy getPolicy(final XXPolicy xPolicy) { ret.setVersion(xPolicy.getVersion()); ret.setPolicyType(xPolicy.getPolicyType() == null ? RangerPolicy.POLICY_TYPE_ACCESS : xPolicy.getPolicyType()); - XXSecurityZone xSecurityZone = daoMgr.getXXSecurityZoneDao().findByZoneId(xPolicy.getZoneId()); + String securityZoneName = daoMgr.getXXSecurityZoneDao().findZoneNameByZoneId(xPolicy.getZoneId()); - if (xSecurityZone != null) { - ret.setZoneName(xSecurityZone.getName()); + if (StringUtils.isNotEmpty(securityZoneName)) { + ret.setZoneName(securityZoneName); } } } else { 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 30db0eacb..7931bb1ab 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 @@ -1886,6 +1886,12 @@ </query> </named-query> + <named-query name="XXSecurityZone.findZoneNameByZoneId"> + <query> + SELECT obj.name FROM XXSecurityZone obj WHERE obj.id = :zoneId + </query> + </named-query> + <named-query name="XXGlobalState.findByStateId"> <query> select obj from XXGlobalState obj where obj.id = :stateId diff --git a/security-admin/src/test/java/org/apache/ranger/patch/TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java b/security-admin/src/test/java/org/apache/ranger/patch/TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java index 856443e1b..c75f794af 100644 --- a/security-admin/src/test/java/org/apache/ranger/patch/TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java +++ b/security-admin/src/test/java/org/apache/ranger/patch/TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java @@ -218,7 +218,7 @@ public void testGetPolicy_nullAndWithZoneName() throws Exception { XXSecurityZone z = new XXSecurityZone(); z.setId(1L); z.setName("zoneName"); - Mockito.when(xxSecurityZoneDao.findByZoneId(Mockito.anyLong())).thenReturn(z); + Mockito.when(xxSecurityZoneDao.findZoneNameByZoneId(Mockito.anyLong())).thenReturn("zoneName"); RangerPolicy out = (RangerPolicy) m.invoke(patch, p); Assertions.assertEquals("zoneName", out.getZoneName());
