DefaultISMLocking of VersionManager will not be release if some
RuntimeException occurs during rollback
-------------------------------------------------------------------------------------------------------
Key: JCR-3283
URL: https://issues.apache.org/jira/browse/JCR-3283
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: jackrabbit-core
Affects Versions: 2.2
Environment: WinXP + JBoss + Oracle
Reporter: licheng
Fix For: 2.2
In TransactionContext.rollback(), every InternalXAResource is supposed to
rollback its pervious action.
The problem is during the iterator on the InternalXAResources,
TransactionContext only catches TransactionException. In most case, it should
be ok. But if some RuntimeException occurs in one of the InternalXAResource,
the latter InternalXAResource will have no chance to rollback its previous
action.
In my case, following RuntimeException happened during the rollback process of
XAItemStateManager, the result is VersionMgr.getXAResourceEnd() will not have
chance to do roll back, make the DefaultISMLocking is not released from current
thread.
All the latter thread that want to acquire the lock of VersionManager is
blocked for ever.
12:30:13,639 ERROR [STDERR] java.util.ConcurrentModificationException
12:30:13,639 ERROR [STDERR] at
java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
12:30:13,639 ERROR [STDERR] at
java.util.LinkedList$ListItr.next(LinkedList.java:696)
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.persistence.util.NodePropBundle.createNodeState(NodePropBundle.java:159
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.load(AbstractBundle
r.java:404)
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.state.SharedItemStateManager.access$12(SharedItemStateManager.java:1814
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.cancel(SharedItemStateManager.java:
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.state.XAItemStateManager.rollback(XAItemStateManager.java:197)
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.TransactionContext.rollback(TransactionContext.java:243)
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.TransactionContext.prepare(TransactionContext.java:167)
12:30:13,639 ERROR [STDERR] at
org.apache.jackrabbit.core.XASessionImpl.prepare(XASessionImpl.java:311)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira