[
https://issues.apache.org/jira/browse/OAK-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13566335#comment-13566335
]
Marcel Reutegger commented on OAK-585:
--------------------------------------
I agree with Mete, an exponential backoff will make it worse.
What I was thinking about recently is something like a database scheduler,
which coordinates concurrent writes. Let's assume we have a number of
concurrent writes that happen in one MongoMK instance. It would be good if the
MongoMK coordinates those writes when it comes to commits. Some of the work can
happen concurrently, but the scheduler could coordinate the revision handling
and commits a bit. The main purpose would be to queue the commits and possibly
update the head revision in a single operation for multiple commits. This
reduces contention on the sync collection and avoids retries when there are no
conflicts.
The hard part is the distributed case. Either the scheduler must be distributed
as well or in the simple case, the batch of commits queued by the scheduler
must be retried in corpore.
> 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