[
https://issues.apache.org/jira/browse/OAK-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13565463#comment-13565463
]
Mete Atamel commented on OAK-585:
---------------------------------
It checks for all commits that have the same baseRevisionId and is not the
current commit (revisionId). It's true that the initial commits might be ok but
subsequent commits might be conflicting. Should we throw
ConflictingCommitException in that case as well? The problem is though in a
constant stream of commits, where do you stop checking subsequent commits? We
could make this real simple and throw ConflictingCommitException whenever
headRevisionId is different but in that case, I fear that we'd run out of
numberOfRetries in CommitCommand pretty quickly. BTW, the initial commit has
baseRevId and revId as 0 and that messed up with conflict detection at some
point, that's why I had to include that greaterThan statement but don't
remember the specific details now.
> Reduce cost of commit retry
> ---------------------------
>
> Key: OAK-585
> URL: https://issues.apache.org/jira/browse/OAK-585
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: mongomk
> Affects Versions: 0.6
> Reporter: Marcel Reutegger
> Attachments: OAK-585-1&2.patch, OAK-585-1&2.patch, OAK-585-1.patch,
> OAK-585-2.patch, OAK-585-3.patch
>
>
> MongoMK currently has a retry mechanism when it commits changes. Its main
> purpose is to make sure the headRevId in the sync collection is updated
> consistently and concurrent conflicting commits are detected. Under higher
> concurrency it may happen that commits are retried multiple times, even when
> commits are non-conflicting. In this case its only about consistently
> updating the headRevId. When this happens the commit will get a new revision
> and the nodes of the commit are written again with the new revision, even
> though no changes to the nodes are needed. Only the revision needed an update.
> The cost of a retry should be reduced in this case. At least a commit retry
> should not leave garbage in the nodes and commits collections.
--
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