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());
                                }
                        }

Reply via email to