[ 
https://issues.apache.org/jira/browse/OAK-962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13744293#comment-13744293
 ] 

Michael Dürig commented on OAK-962:
-----------------------------------

The root cause is probably the same like the one that is responsible for

{code}
java.lang.IllegalStateException: This tree does not exist
        at 
com.google.common.base.Preconditions.checkState(Preconditions.java:149)
        at 
org.apache.jackrabbit.oak.core.MutableTree.checkExists(MutableTree.java:437)
        at 
org.apache.jackrabbit.oak.core.MutableTree.addChild(MutableTree.java:267)
        at 
org.apache.jackrabbit.oak.core.RootFuzzIT$Operation$AddNode.apply(RootFuzzIT.java:233)
{code}

Setting {{KernelNodeState#MAX_CHILD_NODE_NAMES}} to a large value makes the 
problem go away. Looks like the problem is in {{MongoMK#getChildren}}. In the 
second half of the method the cache is refreshed, but the case when 
{{children.hasMore}} is {{true}} is not handled causing further children to go 
amiss. 


                
> RootFuzzIT fails on MongoMK with seed -1091889749
> -------------------------------------------------
>
>                 Key: OAK-962
>                 URL: https://issues.apache.org/jira/browse/OAK-962
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>            Reporter: Michael Dürig
>            Assignee: Marcel Reutegger
>
> Running FuzzRootIT with -DRootFuzzIT-with-mongo-mk=true 
> -DRootFuzzIT-seed=-1091889749 results in
> {code}
> org.apache.jackrabbit.mk.api.MicroKernelException: Exception committing 
> -"/root/N6"
> -"/root/N11"
> ^"/root/N4/P14":"\"V15\""-"/root/N4/N5"
>       at 
> org.apache.jackrabbit.oak.plugins.mongomk.Commit.applyToDocumentStore(Commit.java:262)
>       at 
> org.apache.jackrabbit.oak.plugins.mongomk.Commit.prepare(Commit.java:144)
>       at 
> org.apache.jackrabbit.oak.plugins.mongomk.MongoMK.commit(MongoMK.java:1137)
>       at 
> org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.persistTransientHead(KernelNodeStoreBranch.java:275)
>       at 
> org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.setRoot(KernelNodeStoreBranch.java:93)
>       at 
> org.apache.jackrabbit.oak.core.AbstractRoot.purgePendingChanges(AbstractRoot.java:391)
>       at 
> org.apache.jackrabbit.oak.core.AbstractRoot.commit(AbstractRoot.java:239)
>       at 
> org.apache.jackrabbit.oak.core.RootFuzzIT.fuzzTest(RootFuzzIT.java:141)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>       at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>       at org.junit.runners.Suite.runChild(Suite.java:128)
>       at org.junit.runners.Suite.runChild(Suite.java:24)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>       at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
>       at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77)
>       at 
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
>       at 
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> Caused by: org.apache.jackrabbit.mk.api.MicroKernelException: The node 
> /root/N6/N7 does not exist or is already deleted, before
> r14082a1d9db-0-1; document:
> {_commitRoot={r14082a1d986-0-1=0, r14082a1d996-1-1=0},
> _deleted={r14082a1d986-0-1=false, r14082a1d996-1-1=true},
> _id=3:/root/N6/N7,
> _modified=275316235},
> revision order:
> 1:
>  r14082a1d945-1-1:r14082a1d946-2-0
>       at 
> org.apache.jackrabbit.oak.plugins.mongomk.Commit.createOrUpdateNode(Commit.java:321)
>       at 
> org.apache.jackrabbit.oak.plugins.mongomk.Commit.applyToDocumentStore(Commit.java:246)
>       ... 43 more
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to