jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominique Pfister (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception
Date Wed, 29 Aug 2007 10:21:30 GMT

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


Mime
View raw message