You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2023/05/16 20:12:32 UTC
[ranger] branch master updated: RANGER-4240: optimized removal of x_auth_sess entries while deleting an user
This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new 8a1435199 RANGER-4240: optimized removal of x_auth_sess entries while deleting an user
8a1435199 is described below
commit 8a143519967e699eae73798d93b60733a53254e8
Author: Subhrat Chaudhary <su...@yahoo.com>
AuthorDate: Tue May 16 11:48:00 2023 -0700
RANGER-4240: optimized removal of x_auth_sess entries while deleting an user
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
---
.../src/main/java/org/apache/ranger/biz/XUserMgr.java | 13 ++++++-------
.../main/java/org/apache/ranger/db/XXAuthSessionDao.java | 13 +++++++++++++
.../src/main/resources/META-INF/jpa_named_queries.xml | 8 ++++++++
.../src/test/java/org/apache/ranger/biz/TestXUserMgr.java | 4 ----
4 files changed, 27 insertions(+), 11 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 e3790c0f5..64a88dcf3 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
@@ -2251,7 +2251,7 @@ public class XUserMgr extends XUserMgrBase {
XXAuthSessionDao xXAuthSessionDao=daoManager.getXXAuthSession();
XXUserPermissionDao xXUserPermissionDao=daoManager.getXXUserPermission();
XXPortalUserRoleDao xXPortalUserRoleDao=daoManager.getXXPortalUserRole();
- List<XXAuthSession> xXAuthSessions=xXAuthSessionDao.getAuthSessionByUserId(xXPortalUserId);
+ List<Long> xXAuthSessionIds = xXAuthSessionDao.getAuthSessionIdsByUserId(xXPortalUserId);
List<XXUserPermission> xXUserPermissions=xXUserPermissionDao.findByUserPermissionId(xXPortalUserId);
List<XXPortalUserRole> xXPortalUserRoles=xXPortalUserRoleDao.findByUserId(xXPortalUserId);
@@ -2284,12 +2284,11 @@ public class XUserMgr extends XUserMgrBase {
//delete XXPortalUser references
if(vXPortalUser!=null){
xPortalUserService.updateXXPortalUserReferences(xXPortalUserId);
- if(xXAuthSessions!=null && xXAuthSessions.size()>0){
- logger.warn("Deleting " + xXAuthSessions.size() + " login session records for user '" + vXPortalUser.getLoginId() + "'");
- }
- for (XXAuthSession xXAuthSession : xXAuthSessions) {
- xXAuthSessionDao.remove(xXAuthSession.getId());
+ if(CollectionUtils.isNotEmpty(xXAuthSessionIds)){
+ logger.warn("Deleting " + xXAuthSessionIds.size() + " login session records for user '" + vXPortalUser.getLoginId() + "'");
+ xXAuthSessionDao.deleteAuthSessionsByIds(xXAuthSessionIds);
}
+
for (XXUserPermission xXUserPermission : xXUserPermissions) {
if(xXUserPermission!=null){
XXModuleDef xXModuleDef=daoManager.getXXModuleDef().findByModuleId(xXUserPermission.getModuleId());
@@ -2370,7 +2369,7 @@ public class XUserMgr extends XUserMgrBase {
if(hasReferences==false && vXAuditMapList!=null && vXAuditMapList.getListSize()>0){
hasReferences=true;
}
- if(hasReferences==false && xXAuthSessions!=null && xXAuthSessions.size()>0){
+ if(hasReferences==false && CollectionUtils.isNotEmpty(xXAuthSessionIds)){
hasReferences=true;
}
if(hasReferences==false && xXUserPermissions!=null && xXUserPermissions.size()>0){
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAuthSessionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAuthSessionDao.java
index 934d25865..c3bd13c63 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXAuthSessionDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXAuthSessionDao.java
@@ -75,6 +75,19 @@ public class XXAuthSessionDao extends BaseDao<XXAuthSession> {
.setParameter("authWindowStartTime", authWindowStartTime)
.getSingleResult();
}
+ public List<Long> getAuthSessionIdsByUserId(Long userId) {
+ if(userId == null) {
+ return null;
+ }
+
+ return getEntityManager()
+ .createNamedQuery("XXAuthSession.findIdsByUserId", Long.class)
+ .setParameter("userId", userId)
+ .getResultList();
+ }
+ public void deleteAuthSessionsByIds(List<Long> ids){
+ batchDeleteByIds("XXAuthSession.deleteByIds", ids, "ids");
+ }
}
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index 412d0b10a..2baf53673 100755
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -36,6 +36,14 @@
:authWindowStartTime)
</query>
</named-query>
+ <named-query name="XXAuthSession.findIdsByUserId">
+ <query>SELECT obj.id FROM XXAuthSession obj WHERE obj.userId = :userId
+ </query>
+ </named-query>
+ <named-query name="XXAuthSession.deleteByIds">
+ <query>DELETE FROM XXAuthSession obj WHERE obj.id in :ids
+ </query>
+ </named-query>
<!-- XXPortalUser -->
<named-query name="XXPortalUser.findByEmailAddress">
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java
index 528f4e511..601dbe918 100644
--- a/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestXUserMgr.java
@@ -1216,7 +1216,6 @@ public class TestXUserMgr {
xXUserPermissions.add(xxUserPermission());
List<XXPortalUserRole> xXPortalUserRoles=new ArrayList<XXPortalUserRole>();
xXPortalUserRoles.add(XXPortalUserRole);
- Mockito.when(xXAuthSessionDao.getAuthSessionByUserId(vXPortalUser.getId())).thenReturn(xXAuthSessions);
Mockito.when(xXUserPermissionDao.findByUserPermissionId(vXPortalUser.getId())).thenReturn(xXUserPermissions);
Mockito.when(xXPortalUserRoleDao.findByUserId(vXPortalUser.getId())).thenReturn(xXPortalUserRoles);
XXPolicyDao xXPolicyDao = Mockito.mock(XXPolicyDao.class);
@@ -3057,7 +3056,6 @@ public class TestXUserMgr {
xXAuthSession.setLoginId(vXPortalUser.getLoginId());
List<XXUserPermission> xXUserPermissions=new ArrayList<XXUserPermission>();
List<XXPortalUserRole> xXPortalUserRoles=new ArrayList<XXPortalUserRole>();
- Mockito.when(xXAuthSessionDao.getAuthSessionByUserId(vXPortalUser.getId())).thenReturn(xXAuthSessions);
Mockito.when(xXUserPermissionDao.findByUserPermissionId(vXPortalUser.getId())).thenReturn(xXUserPermissions);
Mockito.when(xXPortalUserRoleDao.findByUserId(vXPortalUser.getId())).thenReturn(xXPortalUserRoles);
XXPolicyDao xXPolicyDao = Mockito.mock(XXPolicyDao.class);
@@ -3095,9 +3093,7 @@ public class TestXUserMgr {
xUserMgr.deleteXUser(vXUser.getId(), force);
Mockito.when(xAuditMapService.searchXAuditMaps((SearchCriteria) Mockito.any())).thenReturn(new VXAuditMapList());
xXAuthSessions.add(xXAuthSession);
- Mockito.when(xXAuthSessionDao.getAuthSessionByUserId(vXPortalUser.getId())).thenReturn(xXAuthSessions);
xUserMgr.deleteXUser(vXUser.getId(), force);
- Mockito.when(xXAuthSessionDao.getAuthSessionByUserId(vXPortalUser.getId())).thenReturn(new ArrayList<XXAuthSession>());
XXUserPermission xUserPermissionObj=xxUserPermission();
xXUserPermissions.add(xUserPermissionObj);
Mockito.when(xXUserPermissionDao.findByUserPermissionId(vXPortalUser.getId())).thenReturn(xXUserPermissions);