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

Mime
View raw message