RANGER-4684 Need to update createdBy ,updatedBy field for gds objects in case the creator is deleted
Signed-off-by: Dineshkumar Yadav <dineshkumar.yadav@outlook.com>
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 a0ff189..61cb983 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 @@
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 @@
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 85e457e..0ced556 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 @@
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);
}
}