[ http://issues.apache.org/jira/browse/JCR-164?page=comments#action_12315231 ]
Stefan Guggisberg commented on JCR-164: --------------------------------------- +1, looks good. > SharedItemStateManager not properly synchronized > ------------------------------------------------ > > Key: JCR-164 > URL: http://issues.apache.org/jira/browse/JCR-164 > Project: Jackrabbit > Type: Bug > Components: core > Environment: svn revision: 209448 > Reporter: Marcel Reutegger > Fix For: 1.0 > Attachments: SharedItemStateManager.patch > > Some time ago we removed synchronized modifiers from the methods store() > hasItemState() and getItemState(). While some care has been taken to ensure > the cache integrity, I think the contract for the SharedItemStateManager > (SISM) is now broken. The JavaDoc does not clearly document this, but I think > all relevant methods of the SISM working on ItemStates should be atomic. > E.g. a call to hasItemState() should not return true for an ItemState that > another thread is currently adding in store(). Similarly a getItemState() > should not return an ItemState that is currenly added or modified in a > store() operation. > Currently I see two options: > - Change the methods to synchronized again. This will actually serialize all > calls to the SISM. > - Implement a more sophisticated synchronisation. E.g. multiple store > operations can still be allowed, as long as their ChangeLogs do not > intersect. Retrieving ItemStates might still be allowed while a ChangeLog is > stored, as long as the ItemState to retrieve is not part of the ChangeLog. > Comments and suggestions are very welcome. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
