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 2007/02/20 16:03:05 UTC

[jira] Created: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

Concurrent add/remove child node operations in a cluster may corrupt repository.
--------------------------------------------------------------------------------

                 Key: JCR-756
                 URL: https://issues.apache.org/jira/browse/JCR-756
             Project: Jackrabbit
          Issue Type: Bug
          Components: core
    Affects Versions: 1.2.1
            Reporter: Dominique Pfister
         Assigned To: Dominique Pfister


Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Updated: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Dominique Pfister updated JCR-756:
----------------------------------

    Attachment: Create.java

Create.java: Sample application that creates nodes and properties below the root node.

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>         Attachments: Create.java, Remove.java
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Commented: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Jukka Zitting commented on JCR-756:
-----------------------------------

Dominique, can you isolate the fix for just this issue from the 509624 commit? Otherwise I can't include
this in the Jackrabbit 1.2.3 release, as the 509624 change is IMHO too large for a patch release.


> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1, 1.2.2
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>             Fix For: 1.2.3
>
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Commented: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Jukka Zitting commented on JCR-756:
-----------------------------------

No problem, we'll just release the fix with 1.3. :-)

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1, 1.2.2
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>             Fix For: 1.3
>
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Resolved: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Dominique Pfister resolved JCR-756.
-----------------------------------

    Resolution: Fixed

Problem identified to be the following during an update:

1) When a journal update is started, the clustered instance syncs with journal contents. This 
    might  change the SharedItemStateManager's states
2) Later on, eventual, non-conflicting changes are merged to the local states. 
3) Finally, the journal update is prepared. This might again trigger an external update from
    the journal and change the shared states . However, these changes are not merged to the 
    local states.
4) The local states are pushed "blindly" to the shared states, potentially overwriting a previous
    change.

Fixed by locking the journal in 1) instead of 3). This still allows non-conflicting merge, but only once. An even
better, less blocking approach would iteratively merge the changes seen in external updates to the local states.

Thanks a lot to Rafał Kwiecień for reporting this bug and providing the test classes.

Fixed in revision 509624.

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Updated: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Dominique Pfister updated JCR-756:
----------------------------------

    Attachment: repository.xml

Sample repository.xml configuration that might be used for both create and remove sample application.

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Updated: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Dominique Pfister updated JCR-756:
----------------------------------

    Attachment: Remove.java

Remove.java: Sample application that deletes nodes below the root node

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>         Attachments: Create.java, Remove.java
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Updated: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Jukka Zitting updated JCR-756:
------------------------------

    Fix Version/s:     (was: 1.2.3)
                   1.3

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1, 1.2.2
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>             Fix For: 1.3
>
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Commented: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Dominique Pfister commented on JCR-756:
---------------------------------------

Jukka, sorry for not having answered to your question, was quite busy the last few days! I quickly took a look at the changes I had to make in order to have the Create/Remove test scenario pass in my already refactored classes, and those changes looked to complicated to be merged back to the 1.2 branch.

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1, 1.2.2
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>             Fix For: 1.3
>
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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


[jira] Updated: (JCR-756) Concurrent add/remove child node operations in a cluster may corrupt repository.

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

Jukka Zitting updated JCR-756:
------------------------------

        Fix Version/s: 1.2.3
    Affects Version/s: 1.2.2

> Concurrent add/remove child node operations in a cluster may corrupt repository.
> --------------------------------------------------------------------------------
>
>                 Key: JCR-756
>                 URL: https://issues.apache.org/jira/browse/JCR-756
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.2.1, 1.2.2
>            Reporter: Dominique Pfister
>         Assigned To: Dominique Pfister
>             Fix For: 1.2.3
>
>         Attachments: Create.java, Remove.java, repository.xml
>
>
> Concurrent add/remove child node operations in a cluster may store an inconsistent list of child node entries, i.e. an entry in the list may appear that has no associated node. This eventually results in an ItemNotFoundException, the next time one of these bogus entries is accessed.

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