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

Marcel Reutegger commented on OAK-962:
--------------------------------------

It's a bit deeper down the call stack actually. {{MongoMK#readChildren}} does 
not set the {{hasMore}} flag correctly. It compares the raw size of the 
returned documents and does not take visibility at the given read revision into 
account. Furthermore it may happen that the method returns fewer children than 
requested, even though there are *more*, again due to visibility at the read 
revision.
                
> 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