You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "angela (JIRA)" <ji...@apache.org> on 2008/04/23 14:33:21 UTC

[jira] Updated: (JCR-1549) XATest#testXAVersionsThoroughly fails if 2 checks are executed separately

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

angela updated JCR-1549:
------------------------

    Attachment: JCR-1549.diff

suggested fix of the test case (will then cause the test to fail)

> XATest#testXAVersionsThoroughly fails if 2 checks are executed separately
> -------------------------------------------------------------------------
>
>                 Key: JCR-1549
>                 URL: https://issues.apache.org/jira/browse/JCR-1549
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: transactions, versioning
>            Reporter: angela
>         Attachments: JCR-1549.diff
>
>
> i came across the following problem while testing the new security functionality:
> XATest#testXAVersionsThoroughly failed on line 1253 upon check(v1_2, phase, "1.0", -1);
> where v1_2 is a version that was removed without having the corresponding transaction committed.
> what happens:
> 1) check(Version, String, String, int) relies on a RepositoryException being generated upon Version.getName()
>      in case of the removed Version.
> 2) Version.getSuccessors() is never executed if getName fails and thus the number of successors is not
>     determined at all.
> changing the check method to be:
>     /**
>      * helper method for {@link #testXAVersionsThoroughly()}
>      */
>     private void check(Version v, String phase, String name, int numSucc) {
>         String vName;
>         try {
>             vName = v.getName();
>         } catch (RepositoryException e) {
>             // node is invalid after remove
>             vName = name;
>         }
>         int vSucc = -1;
>         try {
>             vSucc = v.getSuccessors().length;
>         } catch (RepositoryException e) {
>             // node is invalid after remove
>         }
>         assertEquals(phase + " Version Name", name, vName);
>         assertEquals(phase + " Num Successors", numSucc, vSucc);
>     }
> i.e. separately retrieving the successors will cause the test to fail, since retrieving the successors
> is perfectly possible although the node has be rendered invalid.
> related information:
> i run into that problem due to a change with the DefaultAccessManager, which i changed to use the caching-hierarchyManager present with the SessionItemStateManager. It turned out that in that case Version.getName() didn't fail as expected since for reasons i ignore the cache was either not cleared
> properly OR the corresponding entry got re-added.

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