[ https://issues.apache.org/jira/browse/JCR-314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495892 ]
Jukka Zitting commented on JCR-314: ----------------------------------- > I'm obviously in favour of the last option ;) because it gives us the most > bang for the buck and is by far less risky than option two. Agreed. Note that without solving the concurrency issues in persistence managers (both db and bundle) we're still stuck with fully serialized backend access. But this is one step in the correct direction; the second step would be to start removing the synchronization on the persistence managers. > Fine grained locking in SharedItemStateManager > ---------------------------------------------- > > Key: JCR-314 > URL: https://issues.apache.org/jira/browse/JCR-314 > Project: Jackrabbit > Issue Type: Improvement > Components: core > Affects Versions: 0.9, 1.0, 1.0.1, 1.1, 1.1.1, 1.2.1, 1.2.2, 1.2.3 > Reporter: Marcel Reutegger > Attachments: FineGrainedISMLocking.patch, ISMLocking.patch > > > The SharedItemStateManager (SISM) currently uses a simple read-write lock to > ensure data consistency. Store operations to the PersistenceManager (PM) are > effectively serialized. > We should think about more sophisticated locking to allow concurrent writes > on the PM. > One possible approach: > If a transaction is currently storing data in a PM a second transaction may > check if the set of changes does not intersect with the first transaction. If > that is the case it can safely store its data in the PM. > This fine grained locking must also be respected when reading from the SISM. > A read request for an item that is currently being stored must be blocked > until the store is finished. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.