[ https://issues.apache.org/jira/browse/RANGER-3903?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17648662#comment-17648662 ]
Ramachandran commented on RANGER-3903: -------------------------------------- [~mad...@apache.org] [~abhayk] [~vel] [~spolavarapu] [~pradeep] Hi All, could you Please review it.? > Improvement 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 > Fix For: 3.0.0 > > Attachments: > 0001-RANGER-3903-Improvement-in-RangerPolicyDeltaUtil-app.patch, > image-2022-11-08-09-22-05-188.png, image-2022-12-10-13-45-27-181.png, > image-2022-12-10-13-46-03-834.png, image-2022-12-10-13-46-36-697.png, > image-2022-12-10-13-56-07-135.png, image-2022-12-10-15-33-15-785.png, > screenshot-1.png > > > After going through the below code snippets in the master branch > !screenshot-1.png! > From the above code, we iterate delta policies and check if this policy > exists in the existing policy, we add that to deletePolicies list. > 1st#Improvement: > From the above code, we iterate delta policies and check if this policy > exists in the existing policy, we add that to deletePolicies list. > The delta change type condition for created/updated/deleted is added on top > of the if the condition so adding the condition again is not necessary > > !image-2022-12-10-15-33-15-785.png! > 2nd#Improvement: > problem: > !image-2022-12-10-13-56-07-135.png! > From the above code, we see for each element in the deltas ,we iterate > policies and check if this delta policy exists in the existing policy, we add > that to deletePolicies list. > Solution: > We need to use Map instead of iterating policies for every element of deltas > --> Map<Long,List<RangerPolicy>> policiesIdMap > The building index map key will be policyId and the value will be no of > policies associated with the same policy Id > For each policy in the deltas ,we check in the policiesIdMap whether the > same policyId is present or not ?. > if yes ,we will add all the associated policy list into deletePolicies and > remove the policyId from policiesIdMap > After end of the iteration ,we will iterate the policiesIdMap and get all the > policylist assicated with policyId and add into result set > This will give better performance when the policies list is huge. > !image-2022-12-10-13-45-27-181.png! > !image-2022-12-10-13-46-03-834.png! > !image-2022-12-10-13-46-36-697.png! > -- This message was sent by Atlassian Jira (v8.20.10#820010)