Madhan Neethiraj created RANGER-5480:
----------------------------------------

             Summary: policy engine unit test failure with 
ConcurrentModificationException
                 Key: RANGER-5480
                 URL: https://issues.apache.org/jira/browse/RANGER-5480
             Project: Ranger
          Issue Type: Bug
          Components: plugins
            Reporter: Madhan Neethiraj
            Assignee: Madhan Neethiraj


Policy engine unit tests fail sometimes with ConcurrentModificationException 
error, as shown below:
{noformat}
[ERROR] 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.testPolicyEngine_hiveForTag
  Time elapsed: 0.016 s  <<< ERROR!
java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:911)
        at java.util.ArrayList$Itr.next(ArrayList.java:861)
        at 
org.apache.ranger.plugin.model.RangerPolicy$RangerPolicyItem.toString(RangerPolicy.java:1101)
        at 
org.apache.ranger.plugin.model.RangerPolicy$RangerPolicyItem.toString(RangerPolicy.java:1091)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:136)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyItemEvaluator.matchUserGroupAndOwner(RangerDefaultPolicyItemEvaluator.java:129)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyItemEvaluator.matchUserGroupAndOwner(RangerDefaultPolicyItemEvaluator.java:175)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyItemEvaluator.isMatch(RangerDefaultPolicyItemEvaluator.java:89)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator.getMatchingPolicyItem(RangerDefaultPolicyEvaluator.java:1402)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator.getMatchingPolicyItemForAccessPolicyForSpecificAccess(RangerDefaultPolicyEvaluator.java:1371)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator.getMatchingPolicyItem(RangerDefaultPolicyEvaluator.java:1349)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator.evaluatePolicyItems(RangerDefaultPolicyEvaluator.java:825)
        at 
org.apache.ranger.plugin.policyevaluator.RangerDefaultPolicyEvaluator.evaluate(RangerDefaultPolicyEvaluator.java:251)
        at 
org.apache.ranger.plugin.policyengine.RangerPolicyEngineImpl.evaluatePoliciesForOneAccessTypeNoAudit(RangerPolicyEngineImpl.java:777)
        at 
org.apache.ranger.plugin.policyengine.RangerPolicyEngineImpl.evaluatePoliciesNoAudit(RangerPolicyEngineImpl.java:703)
        at 
org.apache.ranger.plugin.policyengine.RangerPolicyEngineImpl.zoneAwareAccessEvaluationWithNoAudit(RangerPolicyEngineImpl.java:627)
        at 
org.apache.ranger.plugin.policyengine.RangerPolicyEngineImpl.evaluatePolicies(RangerPolicyEngineImpl.java:140)
        at 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.lambda$runTestCaseTests$0(TestPolicyEngine.java:732)
        at 
java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at 
java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
        at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:401)
        at java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:734)
        at 
java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
        at 
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
        at 
java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
        at 
java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:650)
        at 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.runTestCaseTests(TestPolicyEngine.java:648)
        at 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.runTests(TestPolicyEngine.java:637)
        at 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.runTestsFromResourceFiles(TestPolicyEngine.java:528)
        at 
org.apache.ranger.plugin.policyengine.TestPolicyEngine.testPolicyEngine_hiveForTag(TestPolicyEngine.java:270)
        at java.lang.reflect.Method.invoke(Method.java:498)
{noformat}
 

This failure is from following debug log that ends up iterates through  
{{{}RangerPolicyItem.accesses{}}}, while another thread updated this member 
from {{{}RangerAbstractPolicyItemEvaluator.computeWithImpliedGrants(){}}}:
{noformat}
LOG.debug("<== RangerDefaultPolicyItemEvaluator.matchUserGroup(" + policyItem + 
", " + user + ", " + userGroups + ", " + roles + ", " + owner + "): " + ret);
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to