You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "quipere (JIRA)" <ji...@apache.org> on 2007/08/23 18:00:31 UTC

[jira] Created: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

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
         Attachments: repository.xml, 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.


[jira] Updated: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-1082:
-------------------------------

    Fix Version/s: 1.3.2

Merged to the 1.3 branch in revision 577864.

> 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
>             Fix For: 1.3.2
>
>         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.


[jira] Updated: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "quipere (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

quipere updated JCR-1082:
-------------------------

    Attachment: TransientStoreOutOfSyncWithCacheTest.java

> 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
>         Attachments: repository.xml, 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.


[jira] Assigned: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "Dominique Pfister (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dominique Pfister reassigned JCR-1082:
--------------------------------------

    Assignee: Dominique Pfister

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


[jira] Resolved: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "Dominique Pfister (JIRA)" <ji...@apache.org>.
     [ 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.


[jira] Updated: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "Pablo Rios (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pablo Rios updated JCR-1082:
----------------------------

    Attachment: TransientStoreOutOfSyncWithCacheTest.java

TransientStoreOutOfSyncWithCacheTest test does *not* fail with version 1.3 and also fails with trunk (revision 566351)

Attach modified version of  TransientStoreOutOfSyncWithCacheTest that extends from AbstractJCRTest

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


[jira] Updated: (JCR-1082) cache getting out of sync with transientstore causes pathnotfoundexception

Posted by "quipere (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-1082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

quipere updated JCR-1082:
-------------------------

    Attachment: repository.xml

> 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
>         Attachments: repository.xml, 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.