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
The following commit(s) were added to refs/heads/master by this push: new 1893a36 RANGER-2499: Improve bulk create/update policy performance 1893a36 is described below commit 1893a36d64a78e3d18cf74e74bf6a88649d15515 Author: Pradeep <prad...@apache.org> AuthorDate: Fri Aug 9 13:07:46 2019 +0530 RANGER-2499: Improve bulk create/update policy performance --- .../apache/ranger/plugin/store/ServiceStore.java | 2 + .../org/apache/ranger/biz/PolicyRefUpdater.java | 18 +-- .../java/org/apache/ranger/biz/RangerBizUtil.java | 58 +++------ .../apache/ranger/biz/RangerPolicyRetriever.java | 29 +++-- .../java/org/apache/ranger/biz/ServiceDBStore.java | 137 ++++++++++----------- .../java/org/apache/ranger/common/ContextUtil.java | 10 ++ .../java/org/apache/ranger/common/db/BaseDao.java | 21 +++- .../patch/PatchForUpdatingPolicyJson_J10019.java | 2 +- .../java/org/apache/ranger/rest/ServiceREST.java | 65 ++++++---- ...ontextHolder.java => RangerAdminOpContext.java} | 43 +++---- .../security/context/RangerContextHolder.java | 15 ++- .../RangerSecurityContextFormationFilter.java | 1 + .../ranger/service/RangerBaseModelService.java | 9 +- .../ranger/service/RangerDataHistService.java | 6 +- .../main/resources/META-INF/jpa_named_queries.xml | 6 +- .../conf.dist/ranger-admin-default-site.xml | 12 ++ .../org/apache/ranger/biz/TestServiceDBStore.java | 6 +- .../ranger/service/TestRangerDataHistService.java | 2 +- 18 files changed, 237 insertions(+), 205 deletions(-) diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java index d487976..2af5845 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java @@ -69,6 +69,8 @@ public interface ServiceStore { RangerPolicy updatePolicy(RangerPolicy policy) throws Exception; + void deletePolicy(RangerPolicy policy, RangerService service) throws Exception; + void deletePolicy(Long id) throws Exception; RangerPolicy getPolicy(Long id) throws Exception; 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 e242d90..055cd38 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 @@ -73,7 +73,7 @@ public class PolicyRefUpdater { return; } - cleanupRefTables(policy, true); + cleanupRefTables(policy); final Set<String> resourceNames = policy.getResources().keySet(); final Set<String> roleNames = new HashSet<>(); @@ -245,7 +245,7 @@ public class PolicyRefUpdater { } } - public Boolean cleanupRefTables(RangerPolicy policy, boolean flush) { + public Boolean cleanupRefTables(RangerPolicy policy) { final Long policyId = policy == null ? null : policy.getId(); if (policyId == null) { @@ -261,31 +261,31 @@ public class PolicyRefUpdater { XXPolicyRefDataMaskTypeDao xPolDataMaskDao = daoMgr.getXXPolicyRefDataMaskType(); for (XXPolicyRefResource resource : xPolResDao.findByPolicyId(policyId)) { - xPolResDao.remove(resource, flush); + xPolResDao.remove(resource); } for(XXPolicyRefRole role : xPolRoleDao.findByPolicyId(policyId)) { - xPolRoleDao.remove(role, flush); + xPolRoleDao.remove(role); } for(XXPolicyRefGroup group : xPolGroupDao.findByPolicyId(policyId)) { - xPolGroupDao.remove(group, flush); + xPolGroupDao.remove(group); } for(XXPolicyRefUser user : xPolUserDao.findByPolicyId(policyId)) { - xPolUserDao.remove(user, flush); + xPolUserDao.remove(user); } for(XXPolicyRefAccessType access : xPolAccessDao.findByPolicyId(policyId)) { - xPolAccessDao.remove(access, flush); + xPolAccessDao.remove(access); } for(XXPolicyRefCondition condVal : xPolCondDao.findByPolicyId(policyId)) { - xPolCondDao.remove(condVal, flush); + xPolCondDao.remove(condVal); } for(XXPolicyRefDataMaskType dataMask : xPolDataMaskDao.findByPolicyId(policyId)) { - xPolDataMaskDao.remove(dataMask, flush); + xPolDataMaskDao.remove(dataMask); } return true; diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java index d49ea98..58cf790 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java @@ -46,6 +46,7 @@ import org.apache.ranger.common.RangerConstants; import org.apache.ranger.common.StringUtil; import org.apache.ranger.common.UserSessionBase; import org.apache.ranger.db.RangerDaoManager; +import org.apache.ranger.db.XXDBBaseDao; import org.apache.ranger.entity.XXAsset; import org.apache.ranger.entity.XXDBBase; import org.apache.ranger.entity.XXGroup; @@ -100,6 +101,8 @@ public class RangerBizUtil { private static int PATH_CHAR_SET_LEN = PATH_CHAR_SET.length; public static final String AUDIT_STORE_RDBMS = "DB"; public static final String AUDIT_STORE_SOLR = "solr"; + public static final boolean batchClearEnabled = PropertiesUtil.getBooleanProperty("ranger.jpa.jdbc.batch-clear.enable", true); + public static final int batchSize = PropertiesUtil.getIntProperty("ranger.jpa.jdbc.batch-clear.size", 10); String auditDBType = AUDIT_STORE_RDBMS; @@ -1148,46 +1151,6 @@ public class RangerBizUtil { } } - public void createTrxLog(List<XXTrxLog> trxLogList, boolean flush) { - if (trxLogList == null) { - return; - } - - UserSessionBase usb = ContextUtil.getCurrentUserSession(); - Long authSessionId = null; - if (usb != null) { - authSessionId = ContextUtil.getCurrentUserSession().getSessionId(); - } - if(guidUtil != null){ - Long trxId = guidUtil.genLong(); - for (XXTrxLog xTrxLog : trxLogList) { - if (xTrxLog != null) { - if ("Password".equalsIgnoreCase(StringUtil.trim(xTrxLog.getAttributeName()))) { - if (xTrxLog.getPreviousValue() != null - && !xTrxLog.getPreviousValue().trim().isEmpty() - && !"null".equalsIgnoreCase(xTrxLog - .getPreviousValue().trim())) { - xTrxLog.setPreviousValue(AppConstants.Masked_String); - } - if (xTrxLog.getNewValue() != null - && !xTrxLog.getNewValue().trim().isEmpty() - && !"null".equalsIgnoreCase(xTrxLog.getNewValue() - .trim())) { - xTrxLog.setNewValue(AppConstants.Masked_String); - } - } - xTrxLog.setTransactionId(trxId.toString()); - if (authSessionId != null) { - xTrxLog.setSessionId("" + authSessionId); - } - xTrxLog.setSessionType("Spring Authenticated Session"); - xTrxLog.setRequestId(trxId.toString()); - daoManager.getXXTrxLog().create(xTrxLog, flush); - } - } - } - } - public static int getDBFlavor() { String[] propertyNames = { "xa.db.flavor", "ranger.jpa.jdbc.dialect", @@ -1499,4 +1462,19 @@ public class RangerBizUtil { } } } + + public static boolean isBulkMode() { + return ContextUtil.isBulkModeContext(); + } + + //should be used only in bulk operation like importPolicies, policies delete. + public void bulkModeOnlyFlushAndClear() { + if (batchClearEnabled) { + XXDBBaseDao xXDBBaseDao = daoManager.getXXDBBase(); + if (xXDBBaseDao != null) { + xXDBBaseDao.flush(); + xXDBBaseDao.clear(); + } + } + } } diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RangerPolicyRetriever.java b/security-admin/src/main/java/org/apache/ranger/biz/RangerPolicyRetriever.java index 4815f5b..c3c25ce 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/RangerPolicyRetriever.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/RangerPolicyRetriever.java @@ -508,7 +508,8 @@ public class RangerPolicyRetriever { this.service = xService; this.iterPolicy = asList(xPolicy).listIterator(); - this.iterPolicyLabels = daoMgr.getXXPolicyLabelMap().findByPolicyId(policyId).listIterator(); + List<XXPolicyLabelMap> policyLabels = daoMgr.getXXPolicyLabelMap().findByPolicyId(policyId); + this.iterPolicyLabels = policyLabels != null ? policyLabels.listIterator() : null; } RangerPolicy getNextPolicy() { @@ -545,19 +546,21 @@ public class RangerPolicyRetriever { private void getPolicyLabels(RangerPolicy ret) { List<String> xPolicyLabels = new ArrayList<String>(); - while (iterPolicyLabels.hasNext()) { - XXPolicyLabelMap xPolicyLabel = iterPolicyLabels.next(); - if (xPolicyLabel.getPolicyId().equals(ret.getId())) { - String policyLabel = lookupCache.getPolicyLabelName(xPolicyLabel.getPolicyLabelId()); - if (policyLabel != null) { - xPolicyLabels.add(policyLabel); - } - ret.setPolicyLabels(xPolicyLabels); - } else { - if (iterPolicyLabels.hasPrevious()) { - iterPolicyLabels.previous(); + if (iterPolicyLabels != null) { + while (iterPolicyLabels.hasNext()) { + XXPolicyLabelMap xPolicyLabel = iterPolicyLabels.next(); + if (xPolicyLabel.getPolicyId().equals(ret.getId())) { + String policyLabel = lookupCache.getPolicyLabelName(xPolicyLabel.getPolicyLabelId()); + if (policyLabel != null) { + xPolicyLabels.add(policyLabel); + } + ret.setPolicyLabels(xPolicyLabels); + } else { + if (iterPolicyLabels.hasPrevious()) { + iterPolicyLabels.previous(); + } + break; } - break; } } } 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 ef22354..113e727 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 @@ -94,7 +94,6 @@ import org.apache.ranger.db.RangerDaoManager; import org.apache.ranger.db.XXAccessTypeDefDao; import org.apache.ranger.db.XXAccessTypeDefGrantsDao; import org.apache.ranger.db.XXContextEnricherDefDao; -import org.apache.ranger.db.XXDBBaseDao; import org.apache.ranger.db.XXDataMaskTypeDefDao; import org.apache.ranger.db.XXEnumDefDao; import org.apache.ranger.db.XXEnumElementDefDao; @@ -617,7 +616,7 @@ public class ServiceDBStore extends AbstractServiceStore { } RangerServiceDef createdServiceDef = serviceDefService.getPopulatedViewObject(createdSvcDef); - dataHistService.createObjectDataHistory(createdServiceDef, RangerDataHistService.ACTION_CREATE, true); + dataHistService.createObjectDataHistory(createdServiceDef, RangerDataHistService.ACTION_CREATE); postCreate(createdServiceDef); @@ -678,7 +677,7 @@ public class ServiceDBStore extends AbstractServiceStore { updateChildObjectsOfServiceDef(createdSvcDef, configs, resources, accessTypes, policyConditions, contextEnrichers, enums, dataMaskDef, rowFilterDef); RangerServiceDef updatedSvcDef = getServiceDef(serviceDefId); - dataHistService.createObjectDataHistory(updatedSvcDef, RangerDataHistService.ACTION_UPDATE, true); + dataHistService.createObjectDataHistory(updatedSvcDef, RangerDataHistService.ACTION_UPDATE); postUpdate(updatedSvcDef); @@ -1186,7 +1185,7 @@ public class ServiceDBStore extends AbstractServiceStore { if (LOG.isDebugEnabled()) { LOG.debug("==> ServiceDBStore.deleteServiceDef(" + serviceDefId + ", " + forceDelete + ")"); } - bizUtil.blockAuditorRoleUser(); + bizUtil.blockAuditorRoleUser(); UserSessionBase session = ContextUtil.getCurrentUserSession(); if (session == null) { throw restErrorUtil.createRESTException( @@ -1205,7 +1204,7 @@ public class ServiceDBStore extends AbstractServiceStore { throw restErrorUtil.createRESTException("No Service Definiton found for Id: " + serviceDefId, MessageEnums.DATA_NOT_FOUND); } - + List<XXService> serviceList = daoMgr.getXXService().findByServiceDefId(serviceDefId); if (!forceDelete) { if(CollectionUtils.isNotEmpty(serviceList)) { @@ -1225,13 +1224,13 @@ public class ServiceDBStore extends AbstractServiceStore { for(XXAccessTypeDef accessType : accTypeDefs) { deleteXXAccessTypeDef(accessType); } - + XXContextEnricherDefDao xContextEnricherDao = daoMgr.getXXContextEnricherDef(); List<XXContextEnricherDef> contextEnrichers = xContextEnricherDao.findByServiceDefId(serviceDefId); for(XXContextEnricherDef context : contextEnrichers) { xContextEnricherDao.remove(context); } - + XXEnumDefDao enumDefDao = daoMgr.getXXEnumDef(); List<XXEnumDef> enumDefList = enumDefDao.findByServiceDefId(serviceDefId); for (XXEnumDef enumDef : enumDefList) { @@ -1241,10 +1240,10 @@ public class ServiceDBStore extends AbstractServiceStore { } enumDefDao.remove(enumDef); } - + XXPolicyConditionDefDao policyCondDao = daoMgr.getXXPolicyConditionDef(); List<XXPolicyConditionDef> policyCondList = policyCondDao.findByServiceDefId(serviceDefId); - + for (XXPolicyConditionDef policyCond : policyCondList) { List<XXPolicyRefCondition> xxPolicyRefConditions = daoMgr.getXXPolicyRefCondition().findByConditionDefId(policyCond.getId()); for (XXPolicyRefCondition XXPolicyRefCondition : xxPolicyRefConditions) { @@ -1252,24 +1251,24 @@ public class ServiceDBStore extends AbstractServiceStore { } policyCondDao.remove(policyCond); } - + List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByServiceDefId(serviceDefId); for(XXResourceDef resDef : resDefList) { deleteXXResourceDef(resDef); } - + XXServiceConfigDefDao configDefDao = daoMgr.getXXServiceConfigDef(); List<XXServiceConfigDef> configDefList = configDefDao.findByServiceDefId(serviceDefId); for(XXServiceConfigDef configDef : configDefList) { configDefDao.remove(configDef); } - + if(CollectionUtils.isNotEmpty(serviceList)) { for(XXService service : serviceList) { deleteService(service.getId()); } } - + Long version = serviceDef.getVersion(); if(version == null) { version = Long.valueOf(1); @@ -1278,11 +1277,11 @@ public class ServiceDBStore extends AbstractServiceStore { version = Long.valueOf(version.longValue() + 1); } serviceDef.setVersion(version); - + serviceDefService.delete(serviceDef); LOG.info("ServiceDefinition has been deleted successfully. Service-Def Name: " + serviceDef.getName()); - - dataHistService.createObjectDataHistory(serviceDef, RangerDataHistService.ACTION_DELETE, true); + + dataHistService.createObjectDataHistory(serviceDef, RangerDataHistService.ACTION_DELETE); postDelete(serviceDef); @@ -1486,7 +1485,7 @@ public class ServiceDBStore extends AbstractServiceStore { throw restErrorUtil.createRESTException("Could not create service - Internal error ", MessageEnums.ERROR_CREATING_OBJECT); } - dataHistService.createObjectDataHistory(createdService, RangerDataHistService.ACTION_CREATE, true); + dataHistService.createObjectDataHistory(createdService, RangerDataHistService.ACTION_CREATE); List<XXTrxLog> trxLogList = svcService.getTransactionLog(createdService, RangerServiceService.OPERATION_CREATE_CONTEXT); @@ -1679,7 +1678,7 @@ public class ServiceDBStore extends AbstractServiceStore { LOG.debug("vXUser:[" + vXUser + "]"); } RangerService updService = svcService.getPopulatedViewObject(xUpdService); - dataHistService.createObjectDataHistory(updService, RangerDataHistService.ACTION_UPDATE, true); + dataHistService.createObjectDataHistory(updService, RangerDataHistService.ACTION_UPDATE); bizUtil.createTrxLog(trxLogList); return updService; @@ -1699,13 +1698,17 @@ public class ServiceDBStore extends AbstractServiceStore { restrictIfZoneService(service); List<Long> policyIds = daoMgr.getXXPolicy().findPolicyIdsByServiceId(service.getId()); if (CollectionUtils.isNotEmpty(policyIds)) { - List<RangerPolicy> rangerPolicies = new ArrayList<RangerPolicy>(); - for(Long policyID : policyIds) { - RangerPolicy rangerPolicy=getPolicy(policyID); + long totalDeletedPolicies = 0; + for (Long policyID : policyIds) { + RangerPolicy rangerPolicy = getPolicy(policyID); deletePolicy(rangerPolicy, service); - rangerPolicies.add(rangerPolicy); + totalDeletedPolicies = totalDeletedPolicies + 1; + // its a bulk policy delete call flush and clear + if (totalDeletedPolicies % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } } - createTrxLogsAndHistoryAfterDelete(rangerPolicies, service); + bizUtil.bulkModeOnlyFlushAndClear(); } XXServiceConfigMapDao configDao = daoMgr.getXXServiceConfigMap(); @@ -1725,7 +1728,7 @@ public class ServiceDBStore extends AbstractServiceStore { svcService.delete(service); - dataHistService.createObjectDataHistory(service, RangerDataHistService.ACTION_DELETE, true); + dataHistService.createObjectDataHistory(service, RangerDataHistService.ACTION_DELETE); List<XXTrxLog> trxLogList = svcService.getTransactionLog(service, RangerServiceService.OPERATION_DELETE_CONTEXT); bizUtil.createTrxLog(trxLogList); @@ -1897,13 +1900,13 @@ public class ServiceDBStore extends AbstractServiceStore { assignedIdPolicyService.setPopulateExistingBaseFields(true); daoMgr.getXXPolicy().setIdentityInsert(true); - policy = assignedIdPolicyService.create(policy); + policy = assignedIdPolicyService.create(policy, true); daoMgr.getXXPolicy().setIdentityInsert(false); daoMgr.getXXPolicy().updateSequence(); assignedIdPolicyService.setPopulateExistingBaseFields(false); } else { - policy = policyService.create(policy); + policy = policyService.create(policy, true); } XXPolicy xCreatedPolicy = daoMgr.getXXPolicy().getById(policy.getId()); @@ -1912,7 +1915,7 @@ public class ServiceDBStore extends AbstractServiceStore { RangerPolicy createdPolicy = policyService.getPopulatedViewObject(xCreatedPolicy); handlePolicyUpdate(service, RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE, createdPolicy); - dataHistService.createObjectDataHistory(createdPolicy, RangerDataHistService.ACTION_CREATE, true); + dataHistService.createObjectDataHistory(createdPolicy, RangerDataHistService.ACTION_CREATE); List<XXTrxLog> trxLogList = getTransactionLogList(createdPolicy, RangerPolicyService.OPERATION_IMPORT_CREATE_CONTEXT, RangerPolicyService.OPERATION_CREATE_CONTEXT); @@ -2033,14 +2036,14 @@ public class ServiceDBStore extends AbstractServiceStore { policy = policyService.update(policy); XXPolicy newUpdPolicy = daoMgr.getXXPolicy().getById(policy.getId()); - policyRefUpdater.cleanupRefTables(policy, true); - deleteExistingPolicyLabel(policy, true); + policyRefUpdater.cleanupRefTables(policy); + deleteExistingPolicyLabel(policy); policyRefUpdater.createNewPolMappingForRefTable(policy, newUpdPolicy, xServiceDef); createOrMapLabels(newUpdPolicy, uniquePolicyLabels); RangerPolicy updPolicy = policyService.getPopulatedViewObject(newUpdPolicy); handlePolicyUpdate(service, RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE, updPolicy); - dataHistService.createObjectDataHistory(updPolicy, RangerDataHistService.ACTION_UPDATE, true); + dataHistService.createObjectDataHistory(updPolicy, RangerDataHistService.ACTION_UPDATE); bizUtil.createTrxLog(trxLogList); @@ -2061,11 +2064,11 @@ public class ServiceDBStore extends AbstractServiceStore { String policyName = policy.getName(); RangerService service = getServiceByName(policy.getService()); - + if(service == null) { throw new Exception("service does not exist - name='" + policy.getService()); } - + Long version = policy.getVersion(); if(version == null) { version = Long.valueOf(1); @@ -2073,25 +2076,26 @@ public class ServiceDBStore extends AbstractServiceStore { } else { version = Long.valueOf(version.longValue() + 1); } - + policy.setVersion(version); - + List<XXTrxLog> trxLogList = getTransactionLogList(policy, RangerPolicyService.OPERATION_IMPORT_DELETE_CONTEXT, RangerPolicyService.OPERATION_DELETE_CONTEXT); - policyRefUpdater.cleanupRefTables(policy, true); - deleteExistingPolicyLabel(policy, true); + policyRefUpdater.cleanupRefTables(policy); + deleteExistingPolicyLabel(policy); policyService.delete(policy); handlePolicyUpdate(service, RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy); - dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE, true); - + dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE); + bizUtil.createTrxLog(trxLogList); - + LOG.info("Policy Deleted Successfully. PolicyName : " + policyName); } + @Override public void deletePolicy(RangerPolicy policy, RangerService service) throws Exception { if(LOG.isDebugEnabled()) { LOG.debug("==> ServiceDBStore.deletePolicy()"); @@ -2113,9 +2117,13 @@ public class ServiceDBStore extends AbstractServiceStore { version = Long.valueOf(version.longValue() + 1); } policy.setVersion(version); - policyRefUpdater.cleanupRefTables(policy, false); - deleteExistingPolicyLabel(policy, false); - policyService.delete(policy, false); + policyRefUpdater.cleanupRefTables(policy); + deleteExistingPolicyLabel(policy); + policyService.delete(policy); + List<XXTrxLog> trxLogList = getTransactionLogList(policy, RangerPolicyService.OPERATION_IMPORT_DELETE_CONTEXT, RangerPolicyService.OPERATION_DELETE_CONTEXT); + handlePolicyUpdate(service, RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy); + dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE); + bizUtil.createTrxLog(trxLogList); } } if(LOG.isDebugEnabled()) { @@ -2123,30 +2131,6 @@ public class ServiceDBStore extends AbstractServiceStore { } } - public void createTrxLogsAndHistoryAfterDelete(List<RangerPolicy> policies, RangerService service) throws Exception { - if(LOG.isDebugEnabled()) { - LOG.debug("==> ServiceDBStore.createTrxLogsAndHistoryAfterDelete"); - } - if(CollectionUtils.isNotEmpty(policies)) { - for (RangerPolicy policy : policies) { - List<XXTrxLog> trxLogList = getTransactionLogList(policy, RangerPolicyService.OPERATION_IMPORT_DELETE_CONTEXT, RangerPolicyService.OPERATION_DELETE_CONTEXT); - - if(service==null) { - service = getServiceByName(policy.getService()); - } - handlePolicyUpdate(service, RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE, policy); - - dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE, false); - - bizUtil.createTrxLog(trxLogList, false); - } - XXDBBaseDao xXDBBaseDao = daoMgr.getXXDBBase(); - if(xXDBBaseDao!=null) { - xXDBBaseDao.flush(); - } - } - } - List<XXTrxLog> getTransactionLogList(RangerPolicy policy, int operationImportContext, int operationContext) { List<XXTrxLog> trxLogList; StackTraceElement[] trace = Thread.currentThread().getStackTrace(); @@ -2290,9 +2274,11 @@ public class ServiceDBStore extends AbstractServiceStore { public List<RangerPolicy> noZoneFilter(List<RangerPolicy> servicePolicies) { List<RangerPolicy> noZonePolicies = new ArrayList<RangerPolicy>(); - for (RangerPolicy policy : servicePolicies) { - if (StringUtils.isBlank(policy.getZoneName())) { - noZonePolicies.add(policy); + if (CollectionUtils.isNotEmpty(servicePolicies)) { + for (RangerPolicy policy : servicePolicies) { + if (StringUtils.isBlank(policy.getZoneName())) { + noZonePolicies.add(policy); + } } } return noZonePolicies; @@ -3064,14 +3050,19 @@ public class ServiceDBStore extends AbstractServiceStore { RangerService service = getServiceByName(serviceName); List<Long> policyIds = policyDao.findPolicyIdsByServiceNameAndZoneId(serviceName, zoneId); if (CollectionUtils.isNotEmpty(policyIds)) { - List<RangerPolicy> rangerPolicyList=new ArrayList<RangerPolicy>(); + List<RangerPolicy> rangerPolicyList = new ArrayList<RangerPolicy>(); for (Long id : policyIds) { rangerPolicyList.add(getPolicy(id)); } + long totalDeletedPolicies = 0; for (RangerPolicy rangerPolicy : rangerPolicyList) { deletePolicy(rangerPolicy, service); + totalDeletedPolicies = totalDeletedPolicies + 1; + if (totalDeletedPolicies % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } } - createTrxLogsAndHistoryAfterDelete(rangerPolicyList, service); + bizUtil.bulkModeOnlyFlushAndClear(); } } } @@ -3376,7 +3367,7 @@ public class ServiceDBStore extends AbstractServiceStore { } - private Boolean deleteExistingPolicyLabel(RangerPolicy policy, boolean flush) { + private Boolean deleteExistingPolicyLabel(RangerPolicy policy) { if (policy == null) { return false; } @@ -3384,7 +3375,7 @@ public class ServiceDBStore extends AbstractServiceStore { List<XXPolicyLabelMap> xxPolicyLabelMaps = daoMgr.getXXPolicyLabelMap().findByPolicyId(policy.getId()); XXPolicyLabelMapDao policyLabelMapDao = daoMgr.getXXPolicyLabelMap(); for (XXPolicyLabelMap xxPolicyLabelMap : xxPolicyLabelMaps) { - policyLabelMapDao.remove(xxPolicyLabelMap, flush); + policyLabelMapDao.remove(xxPolicyLabelMap); } return true; } diff --git a/security-admin/src/main/java/org/apache/ranger/common/ContextUtil.java b/security-admin/src/main/java/org/apache/ranger/common/ContextUtil.java index 9554b4f..dd7b73e 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/ContextUtil.java +++ b/security-admin/src/main/java/org/apache/ranger/common/ContextUtil.java @@ -19,6 +19,7 @@ package org.apache.ranger.common; +import org.apache.ranger.security.context.RangerAdminOpContext; import org.apache.ranger.security.context.RangerContextHolder; import org.apache.ranger.security.context.RangerSecurityContext; @@ -81,4 +82,13 @@ public class ContextUtil { return null; } + public static boolean isBulkModeContext() { + RangerAdminOpContext context = RangerContextHolder.getOpContext(); + boolean bulkMode = false; + if (context != null) { + bulkMode = context.isBulkModeContext(); + } + return bulkMode; + } + } diff --git a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java index 4f33908..bdd8fbb 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java +++ b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java @@ -86,15 +86,18 @@ public abstract class BaseDao<T> { T ret = null; em.persist(obj); - em.flush(); - + if (!RangerBizUtil.isBulkMode()) { + em.flush(); + } ret = obj; return ret; } public T update(T obj) { em.merge(obj); - em.flush(); + if (!RangerBizUtil.isBulkMode()) { + em.flush(); + } return obj; } @@ -106,10 +109,13 @@ public abstract class BaseDao<T> { if (obj == null) { return true; } - + if (!em.contains(obj)) { + obj = em.merge(obj); + } em.remove(obj); - em.flush(); - + if (!RangerBizUtil.isBulkMode()) { + em.flush(); + } return true; } @@ -117,6 +123,9 @@ public abstract class BaseDao<T> { em.flush(); } + public void clear() { + em.clear(); + } public T create(T obj, boolean flush) { T ret = null; em.persist(obj); diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchForUpdatingPolicyJson_J10019.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchForUpdatingPolicyJson_J10019.java index 0788fb5..1a1cc23 100644 --- a/security-admin/src/main/java/org/apache/ranger/patch/PatchForUpdatingPolicyJson_J10019.java +++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchForUpdatingPolicyJson_J10019.java @@ -235,7 +235,7 @@ public class PatchForUpdatingPolicyJson_J10019 extends BaseLoader { public String doInTransaction(TransactionStatus status) { String ret = null; try { - policyRefUpdater.cleanupRefTables(policy, true); + policyRefUpdater.cleanupRefTables(policy); portPolicy(service.getType(), policy); } catch (Throwable e) { logger.error("PortPolicy failed for policy:[" + policy + "]", e); diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java index 348d072..af74daf 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java @@ -118,6 +118,8 @@ import org.apache.ranger.plugin.util.RangerPerfTracer; import org.apache.ranger.plugin.util.SearchFilter; import org.apache.ranger.plugin.util.ServicePolicies; import org.apache.ranger.security.context.RangerAPIList; +import org.apache.ranger.security.context.RangerAdminOpContext; +import org.apache.ranger.security.context.RangerContextHolder; import org.apache.ranger.security.web.filter.RangerCSRFPreventionFilter; import org.apache.ranger.service.RangerPluginInfoService; import org.apache.ranger.service.RangerPolicyLabelsService; @@ -142,7 +144,6 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import com.sun.jersey.core.header.FormDataContentDisposition; import com.sun.jersey.multipart.FormDataParam; @@ -336,7 +337,9 @@ public class ServiceREST { if(LOG.isDebugEnabled()) { LOG.debug("==> ServiceREST.deleteServiceDef(" + id + ")"); } - + RangerAdminOpContext opContext = new RangerAdminOpContext(); + opContext.setBulkModeContext(true); + RangerContextHolder.setOpContext(opContext); RangerPerfTracer perf = null; try { @@ -789,7 +792,9 @@ public class ServiceREST { if(LOG.isDebugEnabled()) { LOG.debug("==> ServiceREST.deleteService(" + id + ")"); } - + RangerAdminOpContext opContext = new RangerAdminOpContext(); + opContext.setBulkModeContext(true); + RangerContextHolder.setOpContext(opContext); RangerPerfTracer perf = null; try { @@ -2112,24 +2117,27 @@ public class ServiceREST { if (LOG.isDebugEnabled()) { LOG.debug("==> ServiceREST.importPoliciesFromFile()"); } + RangerAdminOpContext opContext = new RangerAdminOpContext(); + opContext.setBulkModeContext(true); + RangerContextHolder.setOpContext(opContext); RangerPerfTracer perf = null; String metaDataInfo = null; List<XXTrxLog> trxLogListError = new ArrayList<XXTrxLog>(); XXTrxLog xxTrxLogError = new XXTrxLog(); - + try { if (RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = RangerPerfTracer.getPerfTracer(PERF_LOG,"ServiceREST.importPoliciesFromFile()"); } - + List<XXTrxLog> trxLogList = new ArrayList<XXTrxLog>(); XXTrxLog xxTrxLog = new XXTrxLog(); xxTrxLog.setAction("IMPORT START"); xxTrxLog.setObjectClassType(AppConstants.CLASS_TYPE_RANGER_POLICY); - xxTrxLog.setPreviousValue("IMPORT START"); + xxTrxLog.setPreviousValue("IMPORT START"); trxLogList.add(xxTrxLog); bizUtil.createTrxLog(trxLogList); - + if (isOverride == null){ isOverride = false; } @@ -2398,7 +2406,11 @@ public class ServiceREST { } } } + if(totalPolicyCreate % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } } + bizUtil.bulkModeOnlyFlushAndClear(); if (LOG.isDebugEnabled()) { LOG.debug("Total Policy Created From Json file : " + totalPolicyCreate); } @@ -2419,11 +2431,9 @@ public class ServiceREST { private RangerExportPolicyList processPolicyInputJsonForMetaData(InputStream uploadedInputStream, RangerExportPolicyList rangerExportPolicyList) throws Exception { - Gson gson = new Gson(); String policiesString = IOUtils.toString(uploadedInputStream); policiesString = policiesString.trim(); if (StringUtils.isNotEmpty(policiesString)) { - gson.fromJson(policiesString, RangerExportPolicyList.class); rangerExportPolicyList = JsonUtilsV2.jsonToObj(policiesString, RangerExportPolicyList.class); } else { LOG.error("Provided json file is empty!!"); @@ -2644,7 +2654,7 @@ public class ServiceREST { } private void deletePoliciesProvidedInServiceMap(List<String> sourceServices, List<String> destinationServices, String zoneName) throws Exception { - int totalDeletedPilicies = 0; + int totalDeletedPolicies = 0; if (CollectionUtils.isNotEmpty(sourceServices) && CollectionUtils.isNotEmpty(destinationServices)) { RangerPolicyValidator validator = validatorFactory.getPolicyValidator(svcStore); @@ -2663,26 +2673,29 @@ public class ServiceREST { ensureAdminAccess(rangerPolicy); bizUtil.blockAuditorRoleUser(); svcStore.deletePolicy(rangerPolicy, service); - totalDeletedPilicies = totalDeletedPilicies + 1; + totalDeletedPolicies = totalDeletedPolicies + 1; + if (totalDeletedPolicies % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } if (LOG.isDebugEnabled()) { - LOG.debug("Policy " + rangerPolicy.getName() + " deleted successfully." ); - LOG.debug("TotalDeletedPilicies: " +totalDeletedPilicies); + LOG.debug("Policy " + rangerPolicy.getName() + " deleted successfully."); + LOG.debug("TotalDeletedPilicies: " + totalDeletedPolicies); } } } - svcStore.createTrxLogsAndHistoryAfterDelete(rangerPolicyList,service); + bizUtil.bulkModeOnlyFlushAndClear(); } } } } } if (LOG.isDebugEnabled()) { - LOG.debug("Total Deleted Policy : " + totalDeletedPilicies); + LOG.debug("Total Deleted Policy : " + totalDeletedPolicies); } } private void deletePoliciesForResource(List<String> sourceServices, List<String> destinationServices, HttpServletRequest request, List<RangerPolicy> exportPolicies, String zoneName) throws Exception { - int totalDeletedPilicies = 0; + int totalDeletedPolicies = 0; if (CollectionUtils.isNotEmpty(sourceServices) && CollectionUtils.isNotEmpty(destinationServices)) { Set<String> exportedPolicyNames=new HashSet<String>(); @@ -2733,9 +2746,12 @@ public class ServiceREST { if (LOG.isDebugEnabled()) { LOG.debug("Policy " + rangerPolicy.getName() + " deleted successfully."); } - totalDeletedPilicies = totalDeletedPilicies + 1; + totalDeletedPolicies = totalDeletedPolicies + 1; + if (totalDeletedPolicies % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } } - svcStore.createTrxLogsAndHistoryAfterDelete(policiesToBeDeleted, service); + bizUtil.bulkModeOnlyFlushAndClear(); } } } @@ -4162,7 +4178,7 @@ public class ServiceREST { private void deleteExactMatchPolicyForResource(List<RangerPolicy> policies, String user, String zoneName) throws Exception { if (CollectionUtils.isNotEmpty(policies)) { - List<RangerPolicy> existingMatchedPolicies=new ArrayList<RangerPolicy>(); + long totalDeletedPolicies = 0; for (RangerPolicy rangerPolicy : policies) { RangerPolicy existingPolicy = null ; try { @@ -4173,17 +4189,18 @@ public class ServiceREST { } catch (Exception e) { existingPolicy=null; } - if(existingPolicy!=null) { + if (existingPolicy != null) { svcStore.deletePolicy(existingPolicy, null); - existingMatchedPolicies.add(existingPolicy); + totalDeletedPolicies = totalDeletedPolicies + 1; + if (totalDeletedPolicies % RangerBizUtil.batchSize == 0) { + bizUtil.bulkModeOnlyFlushAndClear(); + } if (LOG.isDebugEnabled()) { LOG.debug("Policy " + rangerPolicy.getName() + " deleted successfully."); } } } - if (CollectionUtils.isNotEmpty(existingMatchedPolicies)) { - svcStore.createTrxLogsAndHistoryAfterDelete(existingMatchedPolicies, null); - } + bizUtil.bulkModeOnlyFlushAndClear(); } } } diff --git a/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAdminOpContext.java similarity index 60% copy from security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java copy to security-admin/src/main/java/org/apache/ranger/security/context/RangerAdminOpContext.java index 9884163..a447882 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java +++ b/security-admin/src/main/java/org/apache/ranger/security/context/RangerAdminOpContext.java @@ -17,29 +17,20 @@ * under the License. */ - /** - * - */ -package org.apache.ranger.security.context; - -public class RangerContextHolder { - - private static final ThreadLocal<RangerSecurityContext> securityContextThreadLocal = new ThreadLocal<RangerSecurityContext>(); - - private RangerContextHolder() { - - } - - public static RangerSecurityContext getSecurityContext(){ - return securityContextThreadLocal.get(); - } - - public static void setSecurityContext(RangerSecurityContext context){ - securityContextThreadLocal.set(context); - } - - public static void resetSecurityContext(){ - securityContextThreadLocal.remove(); - } - -} +package org.apache.ranger.security.context; + +import java.io.Serializable; + +public class RangerAdminOpContext implements Serializable { + private static final long serialVersionUID = 1L; + private boolean bulkModeContext = false; + + public boolean isBulkModeContext() { + return bulkModeContext; + } + + public void setBulkModeContext(boolean bulkMode) { + this.bulkModeContext = bulkMode; + } + +} diff --git a/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java b/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java index 9884163..865a849 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java +++ b/security-admin/src/main/java/org/apache/ranger/security/context/RangerContextHolder.java @@ -26,6 +26,8 @@ public class RangerContextHolder { private static final ThreadLocal<RangerSecurityContext> securityContextThreadLocal = new ThreadLocal<RangerSecurityContext>(); + private static final ThreadLocal<RangerAdminOpContext> operationContextThreadLocal = new ThreadLocal<RangerAdminOpContext>(); + private RangerContextHolder() { } @@ -41,5 +43,16 @@ public class RangerContextHolder { public static void resetSecurityContext(){ securityContextThreadLocal.remove(); } - + + public static RangerAdminOpContext getOpContext() { + return operationContextThreadLocal.get(); + } + + public static void setOpContext(RangerAdminOpContext context) { + operationContextThreadLocal.set(context); + } + + public static void resetOpContext() { + operationContextThreadLocal.remove(); + } } diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java index d75b903..eb40cfd 100644 --- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java +++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerSecurityContextFormationFilter.java @@ -147,6 +147,7 @@ public class RangerSecurityContextFormationFilter extends GenericFilterBean { } finally { // [4]remove context from thread-local RangerContextHolder.resetSecurityContext(); + RangerContextHolder.resetOpContext(); } } } diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java index de5d343..2f95517 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java @@ -227,6 +227,13 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range return vObj; } + public V create(V vObj, boolean flush) { + T resource = preCreate(vObj); + resource = getDao().create(resource, flush); + vObj = postCreate(resource); + return vObj; + } + public V read(Long id) { T resource = getDao().getById(id); if (resource == null) { @@ -295,7 +302,7 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range tEntityClass.getSimpleName() + ":" + id); } try { - result = getDao().remove(resource, flush); + result = getDao().remove(resource); } catch (Exception e) { LOG.error("Error deleting " + tEntityClass.getSimpleName() + ". Id=" + id, e); diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java index 019816e..7bd0681 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerDataHistService.java @@ -53,7 +53,7 @@ public class RangerDataHistService { public static final String ACTION_UPDATE = "Update"; public static final String ACTION_DELETE = "Delete"; - public void createObjectDataHistory(RangerBaseModelObject baseModelObj, String action, boolean flush) { + public void createObjectDataHistory(RangerBaseModelObject baseModelObj, String action) { if(baseModelObj == null || action == null) { throw restErrorUtil .createRESTException("Error while creating DataHistory. " @@ -108,7 +108,7 @@ public class RangerDataHistService { xDataHist.setObjectClassType(classType); xDataHist.setObjectName(objectName); xDataHist.setContent(content); - xDataHist = daoMgr.getXXDataHist().create(xDataHist, flush); + xDataHist = daoMgr.getXXDataHist().create(xDataHist); if (ACTION_UPDATE.equalsIgnoreCase(action) || ACTION_DELETE.equalsIgnoreCase(action)) { XXDataHist prevHist = daoMgr.getXXDataHist().findLatestByObjectClassTypeAndObjectId(classType, objectId); @@ -122,7 +122,7 @@ public class RangerDataHistService { prevHist.setUpdateTime(currentDate); prevHist.setToTime(currentDate); prevHist.setObjectName(objectName); - prevHist = daoMgr.getXXDataHist().update(prevHist, flush); + prevHist = daoMgr.getXXDataHist().update(prevHist); } } 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 4ea2ad6..3c3d1de 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 @@ -863,8 +863,7 @@ <!-- XXDataHist --> <named-query name="XXDataHist.findLatestByObjectClassTypeAndObjectId"> - <query>select obj from XXDataHist obj where obj.objectId = :objectId - and obj.objectClassType = :classType ORDER BY obj.id</query> + <query>select obj from XXDataHist obj where obj.objectId = :objectId and obj.objectClassType = :classType</query> </named-query> <named-query name="XXDataHist.getVersionListOfObject"> @@ -873,8 +872,7 @@ </named-query> <named-query name="XXDataHist.findObjectByVersionNumber"> - <query>select obj from XXDataHist obj where obj.objectClassType = :classType and - obj.objectId = :objId and obj.version = :version</query> + <query>select obj from XXDataHist obj where obj.objectId = :objId and obj.objectClassType = :classType and obj.version = :version</query> </named-query> <!-- XXTrxLog --> diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml index eb7947a..34e8303 100644 --- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml +++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml @@ -366,6 +366,18 @@ </property> <property> + <name>ranger.jpa.jdbc.batch-clear.enable</name> + <value>true</value> + <description>property to enable bulk mode optimization</description> + </property> + + <property> + <name>ranger.jpa.jdbc.batch-clear.size</name> + <value>10</value> + <description>batch size to flush and clear jdbc statements</description> + </property> + + <property> <name>ranger.jpa.jdbc.credential.alias</name> <value>ranger.db.password</value> <description></description> diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java index b6f13f4..2be3718 100644 --- a/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java +++ b/security-admin/src/test/java/org/apache/ranger/biz/TestServiceDBStore.java @@ -1694,7 +1694,7 @@ public class TestServiceDBStore { Mockito.when(daoManager.getXXPolicy()).thenReturn(xPolicyDao); - Mockito.when(policyService.create(rangerPolicy)).thenReturn( + Mockito.when(policyService.create(rangerPolicy, true)).thenReturn( rangerPolicy); Mockito.when(daoManager.getXXPolicy()).thenReturn(xPolicyDao); @@ -1846,7 +1846,7 @@ public class TestServiceDBStore { Mockito.when(factory.createPolicyResourceSignature(rangerPolicy)) .thenReturn(signature); Mockito.when(!bizUtil.hasAccess(xService, null)).thenReturn(true); - Mockito.when(policyRefUpdater.cleanupRefTables(rangerPolicy, true)).thenReturn(true); + Mockito.when(policyRefUpdater.cleanupRefTables(rangerPolicy)).thenReturn(true); RangerPolicy dbRangerPolicy = serviceDBStore.updatePolicy(rangerPolicy); @@ -1993,7 +1993,7 @@ public class TestServiceDBStore { Mockito.when(xPolicyLabelMapDao.findByPolicyId(rangerPolicy.getId())).thenReturn(ListUtils.EMPTY_LIST); Mockito.when(!bizUtil.hasAccess(xService, null)).thenReturn(true); - Mockito.when(policyRefUpdater.cleanupRefTables(rangerPolicy, true)).thenReturn(true); + Mockito.when(policyRefUpdater.cleanupRefTables(rangerPolicy)).thenReturn(true); serviceDBStore.deletePolicy(Id); } diff --git a/security-admin/src/test/java/org/apache/ranger/service/TestRangerDataHistService.java b/security-admin/src/test/java/org/apache/ranger/service/TestRangerDataHistService.java index 655e17f..65e273c 100644 --- a/security-admin/src/test/java/org/apache/ranger/service/TestRangerDataHistService.java +++ b/security-admin/src/test/java/org/apache/ranger/service/TestRangerDataHistService.java @@ -46,7 +46,7 @@ public class TestRangerDataHistService { String action = "create"; RangerBaseModelObject baseModelObj = new RangerBaseModelObject(); Mockito.when(daoMgr.getXXDataHist()).thenReturn(XXDataHistDao); - rangerDataHistService.createObjectDataHistory(baseModelObj, action, true); + rangerDataHistService.createObjectDataHistory(baseModelObj, action); } }