You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Michael Dürig (JIRA)" <ji...@apache.org> on 2013/01/09 10:52:12 UTC

[jira] [Commented] (OAK-507) MicroKernel.commit() throws NotFoundException for an existing node

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

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

Just noted that the contract of {{MicroKernel.commit}} says: "The implementation tries to merge changes if the revision id of the commit is set accordingly. As an example, deleting a node is allowed if the node existed in the given revision, even if it was deleted in the meantime." So the last line of the code given in the issue description should definitely not fail.
                
> MicroKernel.commit() throws NotFoundException for an existing node
> ------------------------------------------------------------------
>
>                 Key: OAK-507
>                 URL: https://issues.apache.org/jira/browse/OAK-507
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: mk, mongomk
>            Reporter: Michael Dürig
>
> {code}
> String base = mk.commit("", "+\"/a\":{}", null, null);
> mk.commit("", "-\"/a\"", base, null);
> assertTrue(mk.nodeExists("/a", base));
> mk.commit("", "-\"/a\"", base, null);
> {code}
> The last line throws an {{MicroKernelException}} with a {{NotFoundException}} as its cause, which contradicts the preceding assertion.
> {code}
> Exception in thread "main" org.apache.jackrabbit.mk.api.MicroKernelException: org.apache.jackrabbit.mk.store.NotFoundException: /a
> 	at org.apache.jackrabbit.mk.core.MicroKernelImpl.commit(MicroKernelImpl.java:499)
> 	at org.apache.jackrabbit.oak.core.Rebase.testFoo(Rebase.java:587)
> 	at org.apache.jackrabbit.oak.core.Rebase.main(Rebase.java:577)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
> Caused by: org.apache.jackrabbit.mk.store.NotFoundException: /a
> 	at org.apache.jackrabbit.mk.model.StagedNodeTree.remove(StagedNodeTree.java:148)
> 	at org.apache.jackrabbit.mk.model.CommitBuilder$RemoveNode.apply(CommitBuilder.java:293)
> 	at org.apache.jackrabbit.mk.model.CommitBuilder.doCommit(CommitBuilder.java:120)
> 	at org.apache.jackrabbit.mk.model.CommitBuilder.doCommit(CommitBuilder.java:94)
> 	at org.apache.jackrabbit.mk.core.MicroKernelImpl.commit(MicroKernelImpl.java:489)
> {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