You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Dominique Pfister (JIRA)" <ji...@apache.org> on 2008/03/19 11:54:24 UTC

[jira] Created: (JCR-1487) Transient states should be persisted in depth-first traversal order

Transient states should be persisted in depth-first traversal order
-------------------------------------------------------------------

                 Key: JCR-1487
                 URL: https://issues.apache.org/jira/browse/JCR-1487
             Project: Jackrabbit
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: none
            Reporter: Dominique Pfister
            Assignee: Dominique Pfister
            Priority: Minor
             Fix For: 1.5


Inside Node.save(), when filling the list of transient (modified) items, the node itself is added first (if transient) and all transient descendant nodes in depth-first order. This can lead to the following problem with shareable nodes and path-based access management: 

1) assume a node N has a shared child S, which is shared with at least one other node N'
2) S.removeShare is invoked: this removes S from the list of child nodes in N
3) N.save is invoked

N is persisted first, then S. If a path-based access manager tries to build the path of S after N has been persisted, S will no longer be returned in the list of removed child node entries, and an exception will be thrown. This can be circumvented by adding N last.

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


[jira] Resolved: (JCR-1487) Transient states should be persisted in depth-first traversal order

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

Dominique Pfister resolved JCR-1487.
------------------------------------

    Resolution: Fixed

Fixed in revision 638783.

> Transient states should be persisted in depth-first traversal order
> -------------------------------------------------------------------
>
>                 Key: JCR-1487
>                 URL: https://issues.apache.org/jira/browse/JCR-1487
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: none
>            Reporter: Dominique Pfister
>            Assignee: Dominique Pfister
>            Priority: Minor
>             Fix For: 1.5
>
>
> Inside Node.save(), when filling the list of transient (modified) items, the node itself is added first (if transient) and all transient descendant nodes in depth-first order. This can lead to the following problem with shareable nodes and path-based access management: 
> 1) assume a node N has a shared child S, which is shared with at least one other node N'
> 2) S.removeShare is invoked: this removes S from the list of child nodes in N
> 3) N.save is invoked
> N is persisted first, then S. If a path-based access manager tries to build the path of S after N has been persisted, S will no longer be returned in the list of removed child node entries, and an exception will be thrown. This can be circumvented by adding N last.

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


[jira] Updated: (JCR-1487) Transient states should be persisted in depth-first traversal order

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

Jukka Zitting updated JCR-1487:
-------------------------------

    Fix Version/s:     (was: 1.5)
                   core 1.4.3

Merged to the 1.4 branch in revision 650340.

> Transient states should be persisted in depth-first traversal order
> -------------------------------------------------------------------
>
>                 Key: JCR-1487
>                 URL: https://issues.apache.org/jira/browse/JCR-1487
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: none
>            Reporter: Dominique Pfister
>            Assignee: Dominique Pfister
>            Priority: Minor
>             Fix For: core 1.4.3
>
>
> Inside Node.save(), when filling the list of transient (modified) items, the node itself is added first (if transient) and all transient descendant nodes in depth-first order. This can lead to the following problem with shareable nodes and path-based access management: 
> 1) assume a node N has a shared child S, which is shared with at least one other node N'
> 2) S.removeShare is invoked: this removes S from the list of child nodes in N
> 3) N.save is invoked
> N is persisted first, then S. If a path-based access manager tries to build the path of S after N has been persisted, S will no longer be returned in the list of removed child node entries, and an exception will be thrown. This can be circumvented by adding N last.

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