[ https://issues.apache.org/jira/browse/RANGER-3903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ramachandran updated RANGER-3903: --------------------------------- Attachment: image-2022-11-08-09-22-05-188.png > Bug in RangerPolicyDeltaUtil--> applyDeltas method > -------------------------------------------------- > > Key: RANGER-3903 > URL: https://issues.apache.org/jira/browse/RANGER-3903 > Project: Ranger > Issue Type: Improvement > Components: Ranger > Affects Versions: 3.0.0 > Reporter: Ramachandran > Assignee: Ramachandran > Priority: Major > Attachments: > 0001-RANGER-3897-Improvements-in-RangerPolicyDeltaUtil-ap.patch, > image-2022-11-08-09-22-05-188.png > > > After going through the below code snippets in the master branch > while (iter.hasNext()) { > RangerPolicy policy = iter.next(); > if (policyId.equals(policy.getId()) && (changeType == > RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE || changeType == > RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE)) { > deletedPolicies.add(policy); > iter.remove(); > } > } > switch (changeType) { > case RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE: > { > if (CollectionUtils.isNotEmpty(deletedPolicies)) { > LOG.warn("Unexpected: found existing policy for > CHANGE_TYPE_POLICY_CREATE: " + Arrays.toString(deletedPolicies.toArray())); > } > break; > } > case RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE: > { > if (CollectionUtils.isEmpty(deletedPolicies) || > deletedPolicies.size() > 1) { > LOG.warn("Unexpected: found no policy or multiple policies > for CHANGE_TYPE_POLICY_UPDATE: " + > Arrays.toString(deletedPolicies.toArray())); > } > break; > } > case RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE: > { > if (CollectionUtils.isEmpty(deletedPolicies) || > deletedPolicies.size() > 1) { > LOG.warn("Unexpected: found no policy or multiple policies > for CHANGE_TYPE_POLICY_DELETE: " + > Arrays.toString(deletedPolicies.toArray())); > } > break; > } > default: > break; > } > From the above code, we iterate delta policies and check if this policy > exists in the existing policy, we add that to deletePolicies list. > If a delta change type is created, we expect that it should be in the > deletedPolicies list which will not happen. > So we need to add changeType == RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE > as part of the below block of code > if (policyId.equals(policy.getId()) && (changeType == > RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE > || > changeType == RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE > || > changeType == RangerPolicyDelta.CHANGE_TYPE_POLICY_CREATE)) { > deletedPolicies.add(policy); > iter.remove(); > } > } -- This message was sent by Atlassian Jira (v8.20.10#820010)