[ https://issues.apache.org/jira/browse/JCR-314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12525131 ]
prios edited comment on JCR-314 at 9/5/07 11:01 AM: --------------------------------------------------------- It seems that during the time a versioning operation is in progress (writer) it is not possible to establish a new session to the repository. This seems to be so because access to the root node of the version histories (/jcr:system/jcr:versionStorage) is required to create a session and this node is included on the active writer changelog. In other words the reader need to access an item (root node of the version storage) that has a dependency on the active writer changelog. >From XAVersionManager constructor try { state = (NodeState) stateMgr.getItemState(vMgr.getHistoryRootId()); } catch (ItemStateException e) { ... } (An XAVersionManager is instantiated during the instantiation of an XASessionImpl) Note: I've observed this in an XA environment. Am I wrong or right ? What may be the consequences of allowing a reader to get a read lock in this situation even if the writer's changelog includes the VERSION_STORAGE_NODE_ID ? was (Author: prios): It seems that when XA transactions are used the fine grained ISM locking strategy *always* block readers when there is a writer, because the root node of the version histories always has a dependency on the active writer changelog. >From XAVersionManager constructor try { state = (NodeState) stateMgr.getItemState(vMgr.getHistoryRootId()); } catch (ItemStateException e) { ... } Am I wrong or right ? > 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-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.