[
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