[
https://issues.apache.org/jira/browse/OAK-1202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marcel Reutegger resolved OAK-1202.
-----------------------------------
Resolution: Fixed
Fix Version/s: 0.12
Done in revision http://svn.apache.org/r1545190
- Introduced a MERGE type in CommitFailedException to distinguish it from other
commit failures
- Make sure KernelNodeStoreBranch throws appropriate exceptions on failures
- Leverage MicroKernel.reset() when Persisted.merge() fails
- Introduced a new branch state ResetFailed when the branch cannot be reset
- Moved the retry logic to AbstractNodeStoreBranch
- Removed the now duplicate retry logic in MongoNodeStoreBranch
> Retry Persisted merge
> ---------------------
>
> Key: OAK-1202
> URL: https://issues.apache.org/jira/browse/OAK-1202
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: core, mk, mongomk
> Reporter: Marcel Reutegger
> Assignee: Marcel Reutegger
> Fix For: 0.12
>
>
> This is similar to OAK-1198, but for the {{Persisted}} state in
> {{AbstractNodeStoreBranch}}. OAK-1186 describes a case when a retry of a
> {{Persisted}} merge would help to overcome a conflict.
> Compared to OAK-1198, the situation is a bit more difficult. The
> {{Persisted.merge()}} method performs the following actions:
> # rebase the branch
> # run commit hook on the branch
> # persist changes introduced by hook to the branch
> # merge the branch
> The problem with the current implementation is that it cannot be retried if
> the conflict is introduced by the commit hook and is only detected in step 4)
> when the branch is merged. It is currently not possible to efficiently reset
> the branch to a previous state. This missing feature also blocks OAK-1056.
--
This message was sent by Atlassian JIRA
(v6.1#6144)