[ 
https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dominique Pfister resolved JCR-1082.
------------------------------------

    Resolution: Fixed

Bug introduced while fixing JCR-993: in the setup, intermediate node /a/b was 
not added to the CachingHierarchyManager's path map with its internal UUID 
because its parent /a was transiently modified (by removing its property 
propa). Dumping the CHM's path map right before node /a/b/c was removed gave:

/a  <uuid>
  /b   <no uuid>
     /c     <uuid>

CHM received a notification about node /a/b changing because of the removal of 
/a/b/c but was unable to associate this information with its path map entry 
/a/b (see above), which left to an inconsistent state.

Fixed by undoing changes in JCR-993 and introducing a new behaviour when child 
node entries are reordered: every child entry in the cache now gets checked 
whether its name and index are still valid.

Fixed in revision 570736.

> cache getting out of sync with transientstore causes pathnotfoundexception
> --------------------------------------------------------------------------
>
>                 Key: JCR-1082
>                 URL: https://issues.apache.org/jira/browse/JCR-1082
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3.1
>            Reporter: quipere
>            Assignee: Dominique Pfister
>         Attachments: repository.xml, 
> TransientStoreOutOfSyncWithCacheTest.java, 
> TransientStoreOutOfSyncWithCacheTest.java
>
>
> Done some further debugging and think the problem is in the synchronization 
> between cache and transientstore. When I retrieve a childnode when I just 
> made its parent node transient (by removing a prop or something), it will not 
> be added to the cache. When I then remove this node, its nodeid is not 
> removed from cache since its stateId wasn't saved in the cache.  After that I 
> add the same node node again with the same name. When I now try to retrieve 
> this node, I get a path not found exception. I see that by retrieving it, its 
> nodeit is resolved from the cache using its path. Only since the removed node 
> was not removed from cache it returns the nodeid of the already removed node. 
> There is no node present with this id in the transientstore and therefor it 
> throws a pathnotfoundexception.
> provided a failing junit test and repository.xml

-- 
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