Skip to content

Commit aa9f9bc

Browse files
RANGER-5465: Handle upgrade failure caused by the Java patch during the Ranger DB upgrade (#835)
1 parent abac757 commit aa9f9bc

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed

security-admin/src/main/java/org/apache/ranger/db/XXSecurityZoneDao.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,19 @@ public List<XXSecurityZone> getAllZoneIdNames() {
173173

174174
return securityZoneList;
175175
}
176+
177+
public String findZoneNameByZoneId(Long zoneId) {
178+
if (zoneId == null) {
179+
return null;
180+
}
181+
182+
try {
183+
return getEntityManager()
184+
.createNamedQuery("XXSecurityZone.findZoneNameByZoneId", String.class)
185+
.setParameter("zoneId", zoneId)
186+
.getSingleResult();
187+
} catch (NoResultException e) {
188+
return null;
189+
}
190+
}
176191
}

security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_057_ForUpdateToUniqueGUID_J10052.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.ranger.patch;
1919

2020
import org.apache.commons.collections.CollectionUtils;
21+
import org.apache.commons.lang3.StringUtils;
2122
import org.apache.ranger.authorization.utils.JsonUtils;
2223
import org.apache.ranger.biz.ServiceDBStore;
2324
import org.apache.ranger.common.GUIDUtil;
@@ -179,10 +180,10 @@ private RangerPolicy getPolicy(final XXPolicy xPolicy) {
179180
ret.setVersion(xPolicy.getVersion());
180181
ret.setPolicyType(xPolicy.getPolicyType() == null ? RangerPolicy.POLICY_TYPE_ACCESS : xPolicy.getPolicyType());
181182

182-
XXSecurityZone xSecurityZone = daoMgr.getXXSecurityZoneDao().findByZoneId(xPolicy.getZoneId());
183+
String securityZoneName = daoMgr.getXXSecurityZoneDao().findZoneNameByZoneId(xPolicy.getZoneId());
183184

184-
if (xSecurityZone != null) {
185-
ret.setZoneName(xSecurityZone.getName());
185+
if (StringUtils.isNotEmpty(securityZoneName)) {
186+
ret.setZoneName(securityZoneName);
186187
}
187188
}
188189
} else {

security-admin/src/main/java/org/apache/ranger/patch/PatchPreSql_058_ForUpdateToUniqueResoureceSignature_J10053.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
package org.apache.ranger.patch;
1919

2020
import org.apache.commons.collections.CollectionUtils;
21+
import org.apache.commons.lang3.StringUtils;
2122
import org.apache.ranger.authorization.utils.JsonUtils;
2223
import org.apache.ranger.biz.ServiceDBStore;
2324
import org.apache.ranger.common.RangerFactory;
2425
import org.apache.ranger.db.RangerDaoManager;
2526
import org.apache.ranger.db.XXPolicyLabelMapDao;
2627
import org.apache.ranger.entity.XXPolicy;
2728
import org.apache.ranger.entity.XXPolicyLabelMap;
28-
import org.apache.ranger.entity.XXSecurityZone;
2929
import org.apache.ranger.plugin.model.RangerPolicy;
3030
import org.apache.ranger.plugin.model.RangerPolicyResourceSignature;
3131
import org.apache.ranger.util.CLIUtil;
@@ -223,10 +223,10 @@ private RangerPolicy getPolicy(final XXPolicy xPolicy) {
223223
ret.setVersion(xPolicy.getVersion());
224224
ret.setPolicyType(xPolicy.getPolicyType() == null ? RangerPolicy.POLICY_TYPE_ACCESS : xPolicy.getPolicyType());
225225

226-
XXSecurityZone xSecurityZone = daoMgr.getXXSecurityZoneDao().findByZoneId(xPolicy.getZoneId());
226+
String securityZoneName = daoMgr.getXXSecurityZoneDao().findZoneNameByZoneId(xPolicy.getZoneId());
227227

228-
if (xSecurityZone != null) {
229-
ret.setZoneName(xSecurityZone.getName());
228+
if (StringUtils.isNotEmpty(securityZoneName)) {
229+
ret.setZoneName(securityZoneName);
230230
}
231231
}
232232
} else {

security-admin/src/main/resources/META-INF/jpa_named_queries.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1886,6 +1886,12 @@
18861886
</query>
18871887
</named-query>
18881888

1889+
<named-query name="XXSecurityZone.findZoneNameByZoneId">
1890+
<query>
1891+
SELECT obj.name FROM XXSecurityZone obj WHERE obj.id = :zoneId
1892+
</query>
1893+
</named-query>
1894+
18891895
<named-query name="XXGlobalState.findByStateId">
18901896
<query>
18911897
select obj from XXGlobalState obj where obj.id = :stateId

security-admin/src/test/java/org/apache/ranger/patch/TestPatchPreSql_057_ForUpdateToUniqueGUID_J10052.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public void testGetPolicy_nullAndWithZoneName() throws Exception {
218218
XXSecurityZone z = new XXSecurityZone();
219219
z.setId(1L);
220220
z.setName("zoneName");
221-
Mockito.when(xxSecurityZoneDao.findByZoneId(Mockito.anyLong())).thenReturn(z);
221+
Mockito.when(xxSecurityZoneDao.findZoneNameByZoneId(Mockito.anyLong())).thenReturn("zoneName");
222222

223223
RangerPolicy out = (RangerPolicy) m.invoke(patch, p);
224224
Assertions.assertEquals("zoneName", out.getZoneName());

0 commit comments

Comments
 (0)