You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by sp...@apache.org on 2020/03/19 13:43:18 UTC
[ranger] branch master updated: RANGER-2753: Minor fix on expanding
imports in XXUserDao.java
This is an automated email from the ASF dual-hosted git repository.
spolavarapu 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 6d8f917 RANGER-2753: Minor fix on expanding imports in XXUserDao.java
6d8f917 is described below
commit 6d8f9179d60f7d5f70852e13779fb096adfcf714
Author: Sailaja Polavarapu <sp...@cloudera.com>
AuthorDate: Wed Mar 18 16:53:11 2020 -0700
RANGER-2753: Minor fix on expanding imports in XXUserDao.java
---
.../apache/ranger/plugin/util/RangerUserStore.java | 7 +++--
.../main/java/org/apache/ranger/biz/XUserMgr.java | 4 +++
.../apache/ranger/common/RangerUserStoreCache.java | 12 ++++-----
.../main/java/org/apache/ranger/db/XXUserDao.java | 30 ++++++++++++++++++++++
.../main/resources/META-INF/jpa_named_queries.xml | 7 +++++
5 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerUserStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerUserStore.java
index dfe742f..97e05d1 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerUserStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerUserStore.java
@@ -54,11 +54,12 @@ public class RangerUserStore implements Serializable {
private Map<String, String> userCloudIdMapping;
private Map<String, String> groupCloudIdMapping;
- public RangerUserStore() {this(-1L, null, null);}
+ public RangerUserStore() {this(-1L, null, null, null);}
- public RangerUserStore(Long userStoreVersion, Set<UserInfo> users, Set<GroupInfo> groups ) {
+ public RangerUserStore(Long userStoreVersion, Set<UserInfo> users, Set<GroupInfo> groups, Map<String, Set<String>> userGroups) {
setUserStoreVersion(userStoreVersion);
setUserStoreUpdateTime(new Date());
+ setUserGroupMapping(userGroups);
buildMap(users, groups);
}
public Long getUserStoreVersion() {
@@ -153,7 +154,6 @@ public class RangerUserStore implements Serializable {
if (CollectionUtils.isNotEmpty(users)) {
userAttrMapping = new HashMap<>();
userCloudIdMapping = new HashMap<>();
- userGroupMapping = new HashMap<>();
for (UserInfo user : users) {
String username = user.getName();
Map<String, String> userAttrs = user.getOtherAttributes();
@@ -164,7 +164,6 @@ public class RangerUserStore implements Serializable {
userCloudIdMapping.put(cloudId, username);
}
}
- userGroupMapping.put(username, user.getGroups());
}
}
if (CollectionUtils.isNotEmpty(groups)) {
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 88a4330..6a5ca7b 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
@@ -2567,6 +2567,10 @@ public class XUserMgr extends XUserMgrBase {
return new HashSet<>(xGroupService.getGroups());
}
+ public Map<String, Set<String>> getUserGroups() {
+ return daoManager.getXXUser().findGroupsByUserIds();
+ }
+
public RangerUserStore getRangerUserStore(Long lastKnownUserStoreVersion) throws Exception {
RangerUserStore ret = null;
Long rangerUserStoreVersionInDB = getUserStoreVersion();
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java b/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java
index 8ffc98c..fdbad0c 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java
@@ -19,7 +19,6 @@
package org.apache.ranger.common;
-import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
@@ -90,14 +89,13 @@ public class RangerUserStoreCache {
if (lockResult) {
final Set<UserInfo> rangerUsersInDB = xUserMgr.getUsers();
final Set<GroupInfo> rangerGroupsInDB = xUserMgr.getGroups();
- if (CollectionUtils.isNotEmpty(rangerUsersInDB)) {
- for (UserInfo userInfo : rangerUsersInDB) {
- //Get user group mapping from DB and update userInfo object.
- userInfo.setGroups(xUserMgr.getGroupsForUser(userInfo.getName()));
- }
+ final Map<String, Set<String>> userGroups = xUserMgr.getUserGroups();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("No. of users from DB = " + rangerUsersInDB.size() + " and no. of groups from DB = " + rangerGroupsInDB.size());
+ LOG.debug("No. of userGroupMappings = " + userGroups.size());
}
- ret = new RangerUserStore(rangerUserStoreVersionInDB, rangerUsersInDB, rangerGroupsInDB);
+ ret = new RangerUserStore(rangerUserStoreVersionInDB, rangerUsersInDB, rangerGroupsInDB, userGroups);
rangerUserStore = ret;
} else {
if (LOG.isDebugEnabled()) {
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
index cea90c1..1198c6d 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXUserDao.java
@@ -26,6 +26,12 @@ import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXUser;
import org.springframework.stereotype.Service;
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.HashMap;
+
@Service
public class XXUserDao extends BaseDao<XXUser> {
private static final Logger logger = Logger.getLogger(XXResourceDao.class);
@@ -62,4 +68,28 @@ public class XXUserDao extends BaseDao<XXUser> {
}
}
+ public Map<String, Set<String>> findGroupsByUserIds() {
+ Map<String, Set<String>> userGroups = new HashMap<>();
+
+ try {
+ List<Object[]> rows = (List<Object[]>) getEntityManager()
+ .createNamedQuery("XXUser.findGroupsByUserIds")
+ .getResultList();
+ if (rows != null) {
+ for (Object[] row : rows) {
+ if (userGroups.containsKey((String)row[0])) {
+ userGroups.get((String)row[0]).add((String)row[1]);
+ } else {
+ Set<String> groups = new HashSet<>();
+ groups.add((String)row[1]);
+ userGroups.put((String)row[0], groups);
+ }
+ }
+ }
+ } catch (NoResultException e) {
+ //Ignore
+ }
+ return userGroups;
+ }
+
}
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 f23bf2e..22e71e5 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
@@ -127,6 +127,13 @@
</query>
</named-query>
+ <!-- XXGroup -->
+ <named-query name="XXUser.findGroupsByUserIds">
+ <query>SELECT user.name, group.name FROM XXUser user, XXGroup group, XXGroupUser groupUser
+ WHERE user.id=groupUser.userId and group.id=groupUser.parentGroupId
+ </query>
+ </named-query>
+
<!-- XXPermMap -->
<named-query name="XXPermMap.findByResourceId">
<query>SELECT obj FROM XXPermMap obj WHERE obj.resourceId = :resourceId