[ 
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)

Reply via email to