[
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