This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch RANGER-3923 in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/RANGER-3923 by this push: new 1c50756e0 RANGER-4268: increment policy-version of linked services on change to GDS policy 1c50756e0 is described below commit 1c50756e00aa106bdd5f7bb71e1c82d797742b51 Author: Madhan Neethiraj <mad...@apache.org> AuthorDate: Sun Jun 18 02:00:30 2023 -0700 RANGER-4268: increment policy-version of linked services on change to GDS policy --- .../java/org/apache/ranger/biz/ServiceDBStore.java | 20 ++++++++-------- .../java/org/apache/ranger/db/XXServiceDao.java | 27 ++++++++++++++++++++++ .../main/resources/META-INF/jpa_named_queries.xml | 8 +++++++ 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index ecef3dc1e..231472143 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -3641,25 +3641,25 @@ public class ServiceDBStore extends AbstractServiceStore { final RangerDaoManager daoManager = daoMgr; final Long serviceId = serviceDbObj.getId(); - // if this is a tag service, update all services that refer to this tag service - // so that next policy-download from plugins will get updated tag policies + // if this is a tag/gds service, update all services that refer to this service + // so that next policy-download from plugins will get updated tag/gds policies boolean isTagService = serviceDbObj.getType() == EmbeddedServiceDefsUtil.instance().getTagServiceDefId(); - if(isTagService) { - List<XXService> referringServices = serviceDao.findByTagServiceId(serviceId); + boolean isGdsService = serviceDbObj.getType() == EmbeddedServiceDefsUtil.instance().getGdsServiceDefId(); - if(CollectionUtils.isNotEmpty(referringServices)) { - for(XXService referringService : referringServices) { - final Long referringServiceId = referringService.getId(); - final VERSION_TYPE tagServiceversionType = VERSION_TYPE.POLICY_VERSION; + if (isTagService || isGdsService) { + List<Long> referringServiceIds = isTagService ? serviceDao.findIdsByTagServiceId(serviceId) : serviceDao.findIdsByGdsServiceId(serviceId); - Runnable tagServiceVersionUpdater = new ServiceVersionUpdater(daoManager, referringServiceId, tagServiceversionType, policy != null ? policy.getZoneName() : null, policyDeltaType, policy); - transactionSynchronizationAdapter.executeOnTransactionCommit(tagServiceVersionUpdater); + for (Long referringServiceId : referringServiceIds) { + Runnable policyVersionUpdater = new ServiceVersionUpdater(daoManager, referringServiceId, VERSION_TYPE.POLICY_VERSION, policy != null ? policy.getZoneName() : null, policyDeltaType, policy); + transactionSynchronizationAdapter.executeOnTransactionCommit(policyVersionUpdater); + if (updateServiceInfoRoleVersion) { Runnable roleVersionUpdater = new ServiceVersionUpdater(daoManager, referringServiceId, VERSION_TYPE.ROLE_VERSION, policy != null ? policy.getZoneName() : null, policyDeltaType, policy); transactionSynchronizationAdapter.executeOnTransactionCommit(roleVersionUpdater); } } } + final VERSION_TYPE versionType = VERSION_TYPE.POLICY_VERSION; Runnable serviceVersionUpdater = new ServiceVersionUpdater(daoManager, serviceId, versionType, policy != null ? policy.getZoneName() : null, policyDeltaType, policy); diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java index ba92c7340..efe7d4bcc 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java @@ -18,6 +18,7 @@ package org.apache.ranger.db; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import javax.persistence.NoResultException; @@ -112,6 +113,32 @@ public class XXServiceDao extends BaseDao<XXService> { } } + public List<Long> findIdsByTagServiceId(Long tagServiceId) { + List<Long> ret = null; + + try { + ret = getEntityManager().createNamedQuery("XXService.findIdsByTagServiceId", Long.class) + .setParameter("tagServiceId", tagServiceId).getResultList(); + } catch (NoResultException e) { + // ignre + } + + return ret != null ? ret : Collections.emptyList(); + } + + public List<Long> findIdsByGdsServiceId(Long gdsServiceId) { + List<Long> ret = null; + + try { + ret = getEntityManager().createNamedQuery("XXService.findIdsByGdsServiceId", Long.class) + .setParameter("gdsServiceId", gdsServiceId).getResultList(); + } catch (NoResultException e) { + // ignre + } + + return ret != null ? ret : Collections.emptyList(); + } + public XXService findAssociatedTagService(String serviceName) { try { return getEntityManager().createNamedQuery("XXService.findAssociatedTagService", tClass) 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 31c6b6a72..59a20a25e 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 @@ -664,6 +664,14 @@ <query>select obj from XXService obj where obj.tagService = :tagServiceId</query> </named-query> + <named-query name="XXService.findIdsByTagServiceId"> + <query>select obj.id from XXService obj where obj.tagService = :tagServiceId</query> + </named-query> + + <named-query name="XXService.findIdsByGdsServiceId"> + <query>select obj.id from XXService obj where obj.gdsService = :gdsServiceId</query> + </named-query> + <named-query name="XXService.findAssociatedTagService"> <query>select obj from XXService obj where obj.name = :serviceName