This is an automated email from the ASF dual-hosted git repository. pradeep pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 575f7093f353a1ec813e344060b5cb2f5adbf392 Author: Pradeep <prad...@apache.org> AuthorDate: Wed Feb 26 15:58:11 2020 +0530 Revert "RANGER-2732: Batch lookup role, group, and user IDs during policy creation" This reverts commit 51c584682279c799fdc6cad93042e6b7cf461673. --- .../org/apache/ranger/biz/PolicyRefUpdater.java | 94 +++++++++++----------- .../main/java/org/apache/ranger/db/XXGroupDao.java | 26 +----- .../main/java/org/apache/ranger/db/XXRoleDao.java | 23 ------ .../main/java/org/apache/ranger/db/XXUserDao.java | 29 +------ .../main/resources/META-INF/jpa_named_queries.xml | 18 ----- 5 files changed, 48 insertions(+), 142 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java b/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java index 21624c1..41d235a 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/PolicyRefUpdater.java @@ -21,9 +21,7 @@ package org.apache.ranger.biz; import java.util.ArrayList; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; @@ -33,6 +31,7 @@ import org.apache.ranger.common.RangerCommonEnums; import org.apache.ranger.db.RangerDaoManager; import org.apache.ranger.entity.XXAccessTypeDef; import org.apache.ranger.entity.XXDataMaskTypeDef; +import org.apache.ranger.entity.XXGroup; import org.apache.ranger.entity.XXPolicy; import org.apache.ranger.entity.XXPolicyConditionDef; import org.apache.ranger.entity.XXPolicyRefAccessType; @@ -43,7 +42,9 @@ import org.apache.ranger.entity.XXPolicyRefResource; import org.apache.ranger.entity.XXPolicyRefRole; import org.apache.ranger.entity.XXPolicyRefUser; import org.apache.ranger.entity.XXResourceDef; +import org.apache.ranger.entity.XXRole; import org.apache.ranger.entity.XXServiceDef; +import org.apache.ranger.entity.XXUser; import org.apache.ranger.plugin.model.RangerPolicy; import org.apache.ranger.plugin.model.RangerPolicy.RangerDataMaskPolicyItem; import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem; @@ -148,27 +149,25 @@ public class PolicyRefUpdater { } daoMgr.getXXPolicyRefResource().batchCreate(xPolResources); - final Set<String> filteredRoleNames = roleNames.stream() - .filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet()); - Map<String, Long> roleNameIdMap = daoMgr.getXXRole().getIdsByRoleNames(filteredRoleNames); - if (roleNameIdMap.size() != filteredRoleNames.size()) { - RangerBizUtil.setBulkMode(false); - for (String roleName : filteredRoleNames) { - if (roleNameIdMap.containsKey(roleName)) { - continue; - } - - Long roleId = createRoleForPolicy(roleName); - roleNameIdMap.put(roleName, roleId); - } - } - List<XXPolicyRefRole> xPolRoles = new ArrayList<>(); for (String role : roleNames) { + if (StringUtils.isBlank(role)) { + continue; + } + + XXRole xRole = daoMgr.getXXRole().findByRoleName(role); + Long roleId = null; + if (xRole != null) { + roleId = xRole.getId(); + } + else { + RangerBizUtil.setBulkMode(false); + roleId = createRoleForPolicy(role); + } XXPolicyRefRole xPolRole = new XXPolicyRefRole(); xPolRole.setPolicyId(policy.getId()); - xPolRole.setRoleId(roleNameIdMap.get(role)); + xPolRole.setRoleId(roleId); xPolRole.setRoleName(role); xPolRoles.add(xPolRole); @@ -176,27 +175,26 @@ public class PolicyRefUpdater { RangerBizUtil.setBulkMode(oldBulkMode); daoMgr.getXXPolicyRefRole().batchCreate(xPolRoles); - final Set<String> filteredGroupNames = groupNames.stream() - .filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet()); - Map<String, Long> groupNameIdMap = daoMgr.getXXGroup().getIdsByGroupNames(filteredGroupNames); - if (groupNameIdMap.size() != filteredGroupNames.size()) { - RangerBizUtil.setBulkMode(false); - for (String groupName : filteredGroupNames) { - if (groupNameIdMap.containsKey(groupName)) { - continue; - } + List<XXPolicyRefGroup> xPolGroups = new ArrayList<>(); + for (String group : groupNames) { + if (StringUtils.isBlank(group)) { + continue; + } - Long groupId = createGroupForPolicy(groupName); - groupNameIdMap.put(groupName, groupId); + XXGroup xGroup = daoMgr.getXXGroup().findByGroupName(group); + Long groupId = null; + if (xGroup != null) { + groupId = xGroup.getId(); + } + else { + RangerBizUtil.setBulkMode(false); + groupId = createGroupForPolicy(group); } - } - List<XXPolicyRefGroup> xPolGroups = new ArrayList<>(); - for (String group : filteredGroupNames) { XXPolicyRefGroup xPolGroup = new XXPolicyRefGroup(); xPolGroup.setPolicyId(policy.getId()); - xPolGroup.setGroupId(groupNameIdMap.get(group)); + xPolGroup.setGroupId(groupId); xPolGroup.setGroupName(group); xPolGroups.add(xPolGroup); @@ -204,27 +202,27 @@ public class PolicyRefUpdater { RangerBizUtil.setBulkMode(oldBulkMode); daoMgr.getXXPolicyRefGroup().batchCreate(xPolGroups); - final Set<String> filteredUserNames = userNames.stream() - .filter(str -> !StringUtils.isBlank(str)).collect(Collectors.toSet()); - Map<String, Long> userNameIdMap = daoMgr.getXXUser().getIdsByUserNames(filteredUserNames); - if (userNameIdMap.size() != filteredUserNames.size()) { - RangerBizUtil.setBulkMode(false); - for (String userName : filteredUserNames) { - if (userNameIdMap.containsKey(userName)) { - continue; - } + List<XXPolicyRefUser> xPolUsers = new ArrayList<>(); + for (String user : userNames) { + if (StringUtils.isBlank(user)) { + continue; + } - Long userId = createUserForPolicy(userName); - userNameIdMap.put(userName, userId); + XXUser xUser = daoMgr.getXXUser().findByUserName(user); + Long userId = null; + if(xUser != null){ + userId = xUser.getId(); + } + else { + RangerBizUtil.setBulkMode(false); + + userId = createUserForPolicy(user); } - } - List<XXPolicyRefUser> xPolUsers = new ArrayList<>(); - for (String user : filteredUserNames) { XXPolicyRefUser xPolUser = new XXPolicyRefUser(); xPolUser.setPolicyId(policy.getId()); - xPolUser.setUserId(userNameIdMap.get(user)); + xPolUser.setUserId(userId); xPolUser.setUserName(user); xPolUsers.add(xPolUser); diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java index 04633db..1bd59f8 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXGroupDao.java @@ -21,21 +21,15 @@ import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.persistence.NoResultException; - -import org.apache.commons.collections.CollectionUtils; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXGroup; import org.springframework.stereotype.Service; @Service public class XXGroupDao extends BaseDao<XXGroup> { + public XXGroupDao(RangerDaoManagerBase daoManager) { super(daoManager); } @@ -73,22 +67,4 @@ public class XXGroupDao extends BaseDao<XXGroup> { return null; } - public Map<String, Long> getIdsByGroupNames(Collection<String> groupNames) { - Map<String, Long> ret = Collections.emptyMap(); - if (!CollectionUtils.isEmpty(groupNames)) { - try { - Collection<Object[]> result = getEntityManager() - .createNamedQuery("XXGroup.getIdsByGroupNames", Object[].class) - .setParameter("names", groupNames) - .getResultList(); - ret = result.stream().collect( - Collectors.toMap( - object -> (String)(object[1]), - object -> (Long)(object[0]))); - } catch (NoResultException e) { - // ignore - } - } - return ret; - } } diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXRoleDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXRoleDao.java index 185f70a..8528652 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXRoleDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXRoleDao.java @@ -17,7 +17,6 @@ package org.apache.ranger.db; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.ListUtils; import org.apache.commons.lang.StringUtils; import org.apache.ranger.common.db.BaseDao; @@ -26,11 +25,7 @@ import org.springframework.stereotype.Service; import javax.persistence.NoResultException; import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; @Service public class XXRoleDao extends BaseDao<XXRole> { @@ -68,24 +63,6 @@ public class XXRoleDao extends BaseDao<XXRole> { return null; } } - public Map<String, Long> getIdsByRoleNames(Collection<String> roleNames) { - Map<String, Long> ret = Collections.emptyMap(); - if (!CollectionUtils.isEmpty(roleNames)) { - try { - Collection<Object[]> result = getEntityManager() - .createNamedQuery("XXRole.getIdsByRoleNames", Object[].class) - .setParameter("roleNames", roleNames) - .getResultList(); - ret = result.stream().collect( - Collectors.toMap( - object -> (String)(object[1]), - object -> (Long)(object[0]))); - } catch (NoResultException e) { - // ignore - } - } - return ret; - } public List<XXRole> findByServiceId(Long serviceId) { List<XXRole> ret; try { 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 d3666bc..cea90c1 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 @@ -19,14 +19,8 @@ package org.apache.ranger.db; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.stream.Collectors; - import javax.persistence.NoResultException; -import org.apache.commons.collections.CollectionUtils; import org.apache.log4j.Logger; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXUser; @@ -34,7 +28,7 @@ import org.springframework.stereotype.Service; @Service public class XXUserDao extends BaseDao<XXUser> { - private static final Logger logger = Logger.getLogger(XXUserDao.class); + private static final Logger logger = Logger.getLogger(XXResourceDao.class); public XXUserDao(RangerDaoManagerBase daoManager) { super(daoManager); @@ -56,27 +50,6 @@ public class XXUserDao extends BaseDao<XXUser> { return null; } - public Map<String, Long> getIdsByUserNames(Collection<String> names) { - Map<String, Long> ret = Collections.emptyMap(); - if (CollectionUtils.isEmpty(names)) { - logger.debug("names is null or empty"); - } else { - try { - Collection<Object[]> result = getEntityManager() - .createNamedQuery("XXUser.getIdsByUserNames", Object[].class) - .setParameter("names", names) - .getResultList(); - ret = result.stream().collect( - Collectors.toMap( - object -> (String)(object[1]), - object -> (Long)(object[0]))); - } catch (NoResultException e) { - // ignore - } - } - return ret; - } - public XXUser findByPortalUserId(Long portalUserId) { if (portalUserId == null) { return null; 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 a356f52..f23bf2e 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 @@ -198,24 +198,12 @@ </query> </named-query> - <named-query name="XXUser.getIdsByUserNames"> - <query>SELECT Obj.id, Obj.name FROM XXUser obj - WHERE obj.name IN :names - </query> - </named-query> - <named-query name="XXGroup.findByGroupName"> <query>SELECT Obj FROM XXGroup obj WHERE obj.name=:name </query> </named-query> - <named-query name="XXGroup.getIdsByGroupNames"> - <query>SELECT Obj.id, Obj.name FROM XXGroup obj - WHERE obj.name IN :names - </query> - </named-query> - <named-query name="XXGroupUser.deleteByGroupIdAndUserId"> <query>DELETE FROM XXGroupUser obj WHERE obj.parentGroupId=:parentGroupId @@ -1552,12 +1540,6 @@ <query>select obj from XXRole obj where obj.name = :roleName</query> </named-query> - <named-query name="XXRole.getIdsByRoleNames"> - <query>SELECT Obj.id, Obj.name FROM XXRole obj - WHERE obj.name IN :roleNames - </query> - </named-query> - <named-query name="XXRole.findByServiceId"> <query>select obj from XXRole obj, XXPolicyRefRole policyRefRole, XXPolicy policy where obj.id = policyRefRole.roleId and policyRefRole.policyId = policy.id and policy.service = :serviceId </query> </named-query>