This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch ranger-2.5
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/ranger-2.5 by this push:
new 98c445954 RANGER-4804: fix for NPE while updating user-group
associations
98c445954 is described below
commit 98c4459545d0d7c44eba45a6312ab9627b39ba73
Author: RakeshGuptaDev <[email protected]>
AuthorDate: Thu Jul 18 08:39:42 2024 -0700
RANGER-4804: fix for NPE while updating user-group associations
Signed-off-by: Madhan Neethiraj <[email protected]>
(cherry picked from commit b051ad69216c06ca7c190fb285fa713c6bb75643)
---
.../main/java/org/apache/ranger/biz/XUserMgr.java | 41 ++++++++++++++++++----
1 file changed, 35 insertions(+), 6 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
index 9899998f7..e2bf0afc0 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java
@@ -257,7 +257,15 @@ public class XUserMgr extends XUserMgrBase {
createdXUser.setGroupIdList(groupIdList);
createdXUser.setGroupNameList(groupNamesList);
for (VXGroupUser vXGroupUser : vXGroupUsers) {
-
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT));
+ List<XXTrxLogV2> groupUserTrxLogs =
xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT);
+
+ if (CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+ if (trxLogList == null) {
+ trxLogList = new ArrayList<>();
+ }
+
+ trxLogList.addAll(groupUserTrxLogs);
+ }
}
//
xaBizUtil.createTrxLog(trxLogList);
@@ -504,7 +512,16 @@ public class XUserMgr extends XUserMgrBase {
Long userId = vXUser.getId();
List<Long> groupUsersToRemove = new ArrayList<Long>();
- trxLogList.addAll(createOrDelGrpUserWithUpdatedGrpId(vXUser,
groupIdList,userId, groupUsersToRemove));
+ List<XXTrxLogV2> groupUserTrxLogs =
createOrDelGrpUserWithUpdatedGrpId(vXUser, groupIdList,userId,
groupUsersToRemove);
+
+ if (CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+ if (trxLogList == null) {
+ trxLogList = new ArrayList<>();
+ }
+
+ trxLogList.addAll(groupUserTrxLogs);
+ }
+
xaBizUtil.createTrxLog(trxLogList);
updateUserStoreVersion("updateXUser(" + vXUser.getName() + ")");
@@ -536,7 +553,10 @@ public class XUserMgr extends XUserMgrBase {
}
if (!found) {
VXGroupUser vXGroupUser =
createXGroupUser(userId, groupId);
-
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT));
+ List<XXTrxLogV2>
groupUserTrxLogs = xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT);
+ if
(CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+
trxLogList.addAll(groupUserTrxLogs);
+ }
groupNamesSet.add(vXGroupUser.getName());
}
}
@@ -546,14 +566,20 @@ public class XUserMgr extends XUserMgrBase {
boolean found = false;
for (Long groupId : groupIdList) {
if
(groupId.equals(vXGroupUser.getParentGroupId())) {
-
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_UPDATE_CONTEXT));
+ List<XXTrxLogV2>
groupUserTrxLogs = xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_UPDATE_CONTEXT);
+ if
(CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+
trxLogList.addAll(groupUserTrxLogs);
+ }
found = true;
break;
}
}
if (!found) {
// TODO I've to get the
transaction log from here.
-
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_DELETE_CONTEXT));
+ List<XXTrxLogV2>
groupUserTrxLogs = xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_DELETE_CONTEXT);
+ if
(CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+
trxLogList.addAll(groupUserTrxLogs);
+ }
groupUsersToRemove.add(vXGroupUser.getId());
//
xGroupUserService.deleteResource(vXGroupUser.getId());
groupNamesSet.remove(vXGroupUser.getName());
@@ -563,7 +589,10 @@ public class XUserMgr extends XUserMgrBase {
} else {
for (Long groupId : groupIdList) {
VXGroupUser vXGroupUser =
createXGroupUser(userId, groupId);
-
trxLogList.addAll(xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT));
+ List<XXTrxLogV2> groupUserTrxLogs =
xGroupUserService.getTransactionLog(vXGroupUser, null,
OPERATION_CREATE_CONTEXT);
+ if
(CollectionUtils.isNotEmpty(groupUserTrxLogs)) {
+
trxLogList.addAll(groupUserTrxLogs);
+ }
groupNamesSet.add(vXGroupUser.getName());
}
}