jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig (JIRA) <j...@apache.org>
Subject [jira] [Commented] (OAK-507) MicroKernel.commit() throws NotFoundException for an existing node
Date Thu, 10 Jan 2013 10:08:12 GMT

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

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

bq. I think it's expected to fail because it's not clear what the result of the last commit
should be.

Right. I brought up this example a while ago. Since the two concurrent operations are entirely
symmetric, there is no "correct" way to merge them. The only two options are: overwrite one
operation with the results of the other or fail one of the two operations. 
                
> 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
>         Attachments: OAK-507.patch
>
>
> {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

Mime
View raw message