[
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