[ https://issues.apache.org/jira/browse/JCR-314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marcel Reutegger updated JCR-314: --------------------------------- Attachment: ConfigurableISMLocking.patch Esteban, thank you for your patch. I've modified it slightly and used a separate configuration element with a class attribute. I didn't include your changes to the FineGrainedISMLocking because I think they may lead to inconsistencies. As described easier in this issue, once the version storage in sufficiently populated, the login will not block anymore when a version operation is in progress. I have also added a new version of the DTD (1.4) and updated all repository.xml files I found in the sources. Once the changes are committed I will add the DTD to the website. Please note that this change is backward compatible. The ISMLocking element is optional and defaults to DefaultISMLocking (the currently hard coded implementation). > Fine grained locking in SharedItemStateManager > ---------------------------------------------- > > Key: JCR-314 > URL: https://issues.apache.org/jira/browse/JCR-314 > Project: Jackrabbit > Issue Type: Improvement > Components: jackrabbit-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: ConfigurableISMLocking.patch, > fine-grained-locking-1.4.patch, FineGrainedISMLocking-v2.patch, > FineGrainedISMLocking.patch, ISMLocking.patch, writes-per-second.jpg > > > 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.