[ 
https://issues.apache.org/jira/browse/JCR-204?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Reschke closed JCR-204.
------------------------------

> Improve recoverability
> ----------------------
>
>                 Key: JCR-204
>                 URL: https://issues.apache.org/jira/browse/JCR-204
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: indexing, jackrabbit-core, observation, transactions
>         Environment: svn revision: 265028
>            Reporter: Marcel Reutegger
>            Priority: Minor
>
> Transactions in Jackrabbit are committed in SharedItemStateManager.store(). 
> While the call to PersistenceManager.store() is by its definition atomic, 
> updates on the index through synchronous notification by the 
> ObservationManager are not. Consequently, it may happen that the index is not 
> up-to-date with the workspace data in case of a crash.
> Consider the following cases:
> 1)
> - changes in a ChangeLog are successfully stored by the persistence manager
> - the observation manager notifies the query handler about the change
> - the query handler starts to update the index
> - system crashes
> -> the index is missing some changes
> 2)
> - changes in a ChangeLog are successfully stored by the persistence manager
> - system crashes
> -> the index is missing all changes
> To prevent situations like 1) the index must be fully transactional 
> implementing ACID properties.
> In case an index update cannot be completed, the index will appear as if the 
> update never happened. Which results in a situation described in example 2)
> To prevent situations like 2) the observation manager musts keep track of 
> transactions and make sure that committed transactions (the ones that 
> successfully stored the changes in the persistence manager) successfully 
> notify all listeners. If the system should crash while listeners are notified 
> the events must be re-delivered on restart.
> comments and suggestions on alternatives are welcome!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to