[ 
http://issues.apache.org/jira/browse/JCR-371?page=comments#action_12373098 ] 

Giota Karadimitriou commented on JCR-371:
-----------------------------------------

Just to add my experience on this, in case it helps:
This issue occured when while trying to perform concurrent versioning operations
I did a remove version. I tracked down the problem and it seems that while 
trying to remove version7 of a document which had the following hierarchy:

72d4c88e-5c86-40c8-bb98-1b9e32c1a421   //version 7 
|
|
e33688f2-d230-4957-8a51-22433333e440   //versionHistory
|
|
21e1bb18-5507-4cd9-9b91-1c25be0af0e4   //versionStorage
|
|
75e0f33e-a58c-492c-b932-e544415f86e1   //versionStorage
|
|
7b82e86f-c693-47cb-a898-82fb6d41bd29   //versionStorage
|
|
deadbeef-face-babe-cafe-babecafebabe


'deadbeef-face-babe-cafe-babecafebabe' *lost* 
'7b82e86f-c693-47cb-a898-82fb6d41bd29' (first version storage).

This corrupted the document version graph and every create version or remove 
version operation then seemed hopeless since the version graph was corrupted 
and resulted in path errors. I saved the blob value of 
deadbeef-face-babe-cafe-babecafebabe from the database and checked its children 
and 7b82e86f-c693-47cb-a898-82fb6d41bd29 was not among them.

The exception I first got :

Unable to resolve zombie path for item: 72d4c88e-5c86-40c8-bb98-1b9e32c1a421
org.apache.jackrabbit.core.state.ItemStateException: Unable to resolve zombie 
path for item: 72d4c88e-5c86-40c8-bb98-1b9e32c1a421
        at 
org.apache.jackrabbit.core.observation.EventStateCollection.getZombiePath(EventStateCollection.java:519)
        at 
org.apache.jackrabbit.core.observation.EventStateCollection.createEventStates(EventStateCollection.java:316)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:535)
        at 
org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:651)
        at 
org.apache.jackrabbit.core.state.XAItemStateManager.prepare(XAItemStateManager.java:150)
        at 
org.apache.jackrabbit.core.version.XAVersionManager.prepare(XAVersionManager.java:414)
        at 
org.apache.jackrabbit.core.TransactionContext.prepare(TransactionContext.java:128)
        at 
org.apache.jackrabbit.core.XASessionImpl.prepare(XASessionImpl.java:300)
        ....
Caused by: javax.jcr.ItemNotFoundException: failed to build path of 
7b82e86f-c693-47cb-a898-82fb6d41bd29: deadbeef-face-babe-cafe-babecafebabe has 
no child entry for 7b82e86f-c693-47cb-a898-82fb6d41bd29
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:327)
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:316)
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:316)
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:316)
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:316)
        at 
org.apache.jackrabbit.core.HierarchyManagerImpl.getPath(HierarchyManagerImpl.java:376)
        at 
org.apache.jackrabbit.core.observation.ChangeLogBasedHierarchyMgr.getZombiePath(ChangeLogBasedHierarchyMgr.java:84)
        at 
org.apache.jackrabbit.core.observation.EventStateCollection.getZombiePath(EventStateCollection.java:514)
        ... 48 more
         -----
I think at least in my case  the problem occurs in lines 156-167 of 
EventStateCollection because it deletes old parent but then fails to build the 
zombie path which includes the old parent (i use the source of jackrabbit 
1.0rc1)

try {
                            oldParent = (NodeState) changes.get(oldParentId);
                        } catch (NoSuchItemStateException e) {
                            // old parent has been deleted, retrieve from
                            // shared item state manager
                            oldParent = (NodeState) 
provider.getItemState(oldParentId);
                        }

                        NodeTypeImpl oldParentNodeType = getNodeType(oldParent, 
session);
                        Set mixins = oldParent.getMixinTypeNames();
                        Path newPath = getPath(n.getNodeId(), hmgr);
                        Path oldPath = getZombiePath(n.getNodeId(), hmgr); 
//HERE

we use oracle application server, SimpleDBPersistenceManager and java version 
"1.4.2_03".
Also, jca is used to make jackrabbit a resource adapter.

 

> ItemStateException on concurrently committing transactions of versioning 
> operations
> -----------------------------------------------------------------------------------
>
>          Key: JCR-371
>          URL: http://issues.apache.org/jira/browse/JCR-371
>      Project: Jackrabbit
>         Type: Bug

>   Components: versioning
>     Versions: 0.9
>  Environment: r388178
>     Reporter: Tobias Bocanegra
>     Assignee: Tobias Bocanegra
>      Fix For: 1.1

>
> see tests in JCR-335
> org.apache.jackrabbit.core.state.ItemStateException: Unable to resolve path 
> for item: 69d80165-7ef5-4b6b-8aa9-be9c9be1f994
>       at 
> org.apache.jackrabbit.core.observation.EventStateCollection.getPath(EventStateCollection.java:525)
>       at 
> org.apache.jackrabbit.core.observation.EventStateCollection.createEventStates(EventStateCollection.java:377)
>       at 
> org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:547)
>       at 
> org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:668)
>       at 
> org.apache.jackrabbit.core.state.XAItemStateManager.prepare(XAItemStateManager.java:151)
>       at 
> org.apache.jackrabbit.core.version.XAVersionManager.prepare(XAVersionManager.java:431)
>       at 
> org.apache.jackrabbit.core.TransactionContext.prepare(TransactionContext.java:129)
>       at 
> org.apache.jackrabbit.core.XASessionImpl.prepare(XASessionImpl.java:309)
>       at test.JCRUserTransaction.commit(JCRUserTransaction.java:74)
>       at org.apache.jackrabbit.JRTestDeadlock.run(JRTestDeadlock.java:110)
> Caused by: javax.jcr.ItemNotFoundException: failed to build path of 
> 69d80165-7ef5-4b6b-8aa9-be9c9be1f994: a0ecd4b0-a442-4b1e-a2f6-51441f40d452 
> has no child entry for 69d80165-7ef5-4b6b-8aa9-be9c9be1f994
>       at 
> org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:308)
>       at 
> org.apache.jackrabbit.core.HierarchyManagerImpl.getPath(HierarchyManagerImpl.java:357)
>       at 
> org.apache.jackrabbit.core.observation.EventStateCollection.getPath(EventStateCollection.java:520)
>       ... 9 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to