You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Thomas Mueller (JIRA)" <ji...@apache.org> on 2010/01/19 15:30:55 UTC

[jira] Updated: (JCR-2449) Slow performance due to JCR-2138 (Prevent persistence of faulty back-references)

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

Thomas Mueller updated JCR-2449:
--------------------------------

    Attachment: JCR-2449.patch

This patch solves the performance problem introduced by JCR-2138. The unit tests of jackrabbit-core still work for me after applying the patch.

I don't really understand what the problem was before JCR-2138. 

Was it a clustering issue? If yes, then the check introduced doesn't really work. Reason: 1) first it checks if references were added, and if yes, then 2) the references are removed. However if the second cluster node adds the references between 1) and 2) then it will still not work.

If it was not a clustering problem, then why do you check if the node already exists in the 'addedStates' list? Those by definition don't exist (they are added, that's the reason to call it 'addedStates'). As far as I understand, saving is synchronized. Is it only a problem if a non-default ISMLocking is used?


> Slow performance due to JCR-2138 (Prevent persistence of faulty back-references)
> --------------------------------------------------------------------------------
>
>                 Key: JCR-2449
>                 URL: https://issues.apache.org/jira/browse/JCR-2449
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 1.5.7, 2.0-beta4
>            Reporter: Thomas Mueller
>         Attachments: JCR-2449.patch
>
>
> In revision 782898, the following code was introduced:
> updateReferences() {
>     for (Iterator i = local.addedStates(); i.hasNext();) {
>         ...
>         if (hasItemState(state.getId())) {
>             ...
>         }
>     }
> }
> This will try to fetch inexistent nodes from the persistence manager.
> Depending on the persistence manager implementation, this is very slow.
> I hope there is a way to avoid this call, or if not, speed it up.

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