[ 
https://issues.apache.org/jira/browse/JCR-1197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12540790
 ] 

Przemo Pakulski commented on JCR-1197:
--------------------------------------

There is a lot of layers in Jackrabbit, and almost each layer has own cache. It 
seems that caches are not invalidated properly.
During save() method on ItemImpl transient item states are disposed from 
SessionItemStateManager, but it seems than ItemManager cache is not 
invalidated. Sometimes it works because ItemManager uses weak references, but 
in some cases it is causing problems like this.

To make it work I needed to put such line :

((SessionImpl)session).getItemManager().dispose();

between restore and checkout in our code. This line clears ItemManager cache 
completely.

> ItemManager cache is getting out of sync
> ----------------------------------------
>
>                 Key: JCR-1197
>                 URL: https://issues.apache.org/jira/browse/JCR-1197
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 1.3.3, 1.4
>            Reporter: Przemo Pakulski
>            Priority: Critical
>             Fix For: 1.4
>
>         Attachments: CheckoutFailure.java
>
>
> It seems that ItemManager cache is not maintained correctly. I'm getting 
> InvalidItemStateException: 'propertyId' has been modified externally tryin 
> restore/checkout versionable nodes in single thread.
> ItemState should be evicted from ItemStateManager cache when modified, it 
> seems that status of ItemState is changed to MODIFIED, but itemState remains 
> in the cache.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to