Martijn Hendriks (JIRA | 2 Mar 2009 09:50
Picon
Favicon

Resolved: (JCR-1117) Bundle cache is not rolled back when the storage of a ChangeLog fails


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

Martijn Hendriks resolved JCR-1117.
-----------------------------------

    Resolution: Fixed
      Assignee:     (was: Martijn Hendriks)

> Bundle cache is not rolled back when the storage of a ChangeLog fails
> ---------------------------------------------------------------------
>
>                 Key: JCR-1117
>                 URL: https://issues.apache.org/jira/browse/JCR-1117
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 1.3, 1.4, 1.5.0, 1.5.2
>            Reporter: Martijn Hendriks
>         Attachments: JCR-1117-v2.patch, JCR-1117-v3.patch, JCR-1117.patch, stacktrace.txt
>
>
> The bundle cache in the bundle persistence managers is not restored to its old state when the
AbstractBundlePersistenceManager.store(ChangeLog changeLog) method throws an exception. If, for
instance, the storage of references fails then the
AbstractBundlePersistenceManager.putBundle(NodePropBundle bundle) method has already been
called for all modified bundles. Because of the connection rollback, the bundle cache will be
out-of-sync with the persistent state. As a result, the SharedItemStateManager will have an incorrect
view of the persistent state.
> Furthermore, if the blockOnConnectionLoss property is set to true, then the
BundleDbPersistenceManager can be caught in an infinite loop because of invalid SQL inserts because of
an incorrect bundle cache; see attached stacktrace.


Gmane