jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcel Reutegger (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (OAK-566) MongoMK throws exception when adding nodes concurrently
Date Thu, 24 Jan 2013 14:49:12 GMT

     [ https://issues.apache.org/jira/browse/OAK-566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Marcel Reutegger resolved OAK-566.

       Resolution: Fixed
    Fix Version/s: 0.7

Committed the patch with minor modifications in revision: 1438025

Let's continue the discussion in OAK-560. Ideally we didn't have to deal with commits that
become invalid over time.
> MongoMK throws exception when adding nodes concurrently
> -------------------------------------------------------
>                 Key: OAK-566
>                 URL: https://issues.apache.org/jira/browse/OAK-566
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: mongomk
>            Reporter: Damien Obrist
>            Priority: Minor
>             Fix For: 0.7
>         Attachments: MongoMKConcurrentAddTest.java, OAK-566.patch
> It seems that there is a problem in the MongoDB microkernel when lots of threads try
to commit new nodes concurrently. I have attached a JUnit test which reproduces the error.
The test creates 16 microkernels, each committing two nodes in a separate thread. Some threads
will throw an exception saying that the node they're trying to commit already exists:
> java.lang.RuntimeException: There's already a child node with name 'node6'
> at org.apache.jackrabbit.mongomk.impl.instruction.CommitCommandInstructionVisitor.visit(CommitCommandInstructionVisitor.java:97)
> at org.apache.jackrabbit.mongomk.impl.instruction.AddNodeInstructionImpl.accept(AddNodeInstructionImpl.java:40)
> at org.apache.jackrabbit.mongomk.impl.command.CommitCommandNew.createMongoNodes(CommitCommandNew.java:155)
> at org.apache.jackrabbit.mongomk.impl.command.CommitCommandNew.execute(CommitCommandNew.java:97)
> at org.apache.jackrabbit.mongomk.impl.command.CommitCommandNew.execute(CommitCommandNew.java:1)
> at org.apache.jackrabbit.mongomk.impl.command.DefaultCommandExecutor.execute(DefaultCommandExecutor.java:38)
> at org.apache.jackrabbit.mongomk.impl.MongoNodeStore.commit(MongoNodeStore.java:110)
> at org.apache.jackrabbit.mongomk.impl.MongoMicroKernel.commit(MongoMicroKernel.java:112)
> ... 7 more
> This cannot be the case however, as the nodes added by the different threads do not overlap
/ conflict. No exceptions are thrown if setting the number of threads to some lower number,
but I have observed that in this case the problem still exists when trying to add a larger
number of nodes (more than just 2).

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

View raw message