From c8fbd01b9d28550293ae61f6c2b26816c85a1b5b Mon Sep 17 00:00:00 2001 From: prashant Date: Wed, 31 Jan 2024 13:15:08 +0530 Subject: [PATCH] RANGER-4684 Need to update createdBy ,updatedBy field for gds objects in case the creator is deleted Signed-off-by: Dineshkumar Yadav --- .../java/org/apache/ranger/common/db/BaseDao.java | 8 +++++--- .../apache/ranger/service/XPortalUserService.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java index a0ff189482..61cb98308b 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java +++ b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java @@ -47,6 +47,7 @@ public abstract class BaseDao { private static final String PROP_BATCH_DELETE_BATCH_SIZE = "ranger.admin.dao.batch.delete.batch.size"; private static final int DEFAULT_BATCH_DELETE_BATCH_SIZE = 1000; private static int BATCH_DELETE_BATCH_SIZE; + private static final String GDS_TABLES = "x_gds_"; static { try { @@ -348,11 +349,12 @@ public void updateUserIDReference(String paramName,long oldID) { Table table = tClass.getAnnotation(Table.class); if(table != null) { String tableName = table.name(); - String query = "update " + tableName + " set " + paramName+"=null" - + " where " +paramName+"=" + oldID; + String updatedValue = tableName.contains(GDS_TABLES) ? "1" : "null"; + String query = "update " + tableName + " set " + paramName+"=" + updatedValue + " where " +paramName+"=" + oldID; + int count=getEntityManager().createNativeQuery(query).executeUpdate(); if(count>0){ - logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "=null where " + paramName + "=" + oldID); + logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "="+ updatedValue + " where " + paramName + "=" + oldID); } }else{ logger.warn("Required annotation `Table` not found"); diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java index 85e457efa8..0ced5565b8 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java @@ -326,5 +326,17 @@ public void updateXXPortalUserReferences(long xXPortalUserId){ daoManager.getXXPolicyRefRole().updateUserIDReference("upd_by_id", xXPortalUserId); daoManager.getXXRole().updateUserIDReference("added_by_id", xXPortalUserId); daoManager.getXXRole().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataset().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataset().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataShare().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataShare().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsProject().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsProject().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsSharedResource().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsSharedResource().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataShareInDataset().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataShareInDataset().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDatasetInProject().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDatasetInProject().updateUserIDReference("upd_by_id", xXPortalUserId); } }