Deadlock in DBCP when accessing node
------------------------------------

                 Key: JCR-3158
                 URL: https://issues.apache.org/jira/browse/JCR-3158
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: 2.3.3, 2.2.9
         Environment: Java 6
Jackrabbit 2.2.9
Derby
            Reporter: Tobias Mattsson
            Priority: Critical


I found a deadlock situation using JR 2.2.9, the problem is with DBCP 1.2.2 and 
is fixed in DBCP 1.3, JR trunk also uses DBCP 1.2.2 and should also be updated

The ticket in dbcp is #DBCP-270, related tickets are #DBCP-65 #DBCP-281 
#DBCP-271

Stack trace of where my call is stalled:
{code}
main@1, prio=5, in group 'main', status: 'MONITOR'
         blocks Timer-1@2545
         waiting for Timer-1@2545 to release lock on {1}
          at 
org.apache.commons.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1137)
          at 
org.apache.commons.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
          at 
org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:87)
          at 
org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
          at 
org.apache.jackrabbit.core.util.db.DbUtility.close(DbUtility.java:75)
          at 
org.apache.jackrabbit.core.util.db.ResultSetWrapper.invoke(ResultSetWrapper.java:63)
          at $Proxy12.close(Unknown Source:-1)
          at 
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1042)
          at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:669)
          at 
org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.load(AbstractBundlePersistenceManager.java:415)
          at 
org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState(SharedItemStateManager.java:1830)
          at 
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualItemState(SharedItemStateManager.java:1750)
          at 
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:265)
          at 
org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:109)
          at 
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:174)
          at 
org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:260)
          at 
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:161)
          at 
org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:382)
          at 
org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:669)
          at 
org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:647)
          at 
org.apache.jackrabbit.core.LazyItemIterator.prefetchNext(LazyItemIterator.java:120)
          at 
org.apache.jackrabbit.core.LazyItemIterator.next(LazyItemIterator.java:257)
          at 
info.magnolia.jcr.iterator.DelegatingNodeIterator.next(DelegatingNodeIterator.java:79)
{code}

This is the offending thread:
{code}
Timer-1@2545 daemon, prio=5, in group 'main', status: 'MONITOR'
         blocks main@1
         waiting for main@1 to release lock on {1}
          at 
org.apache.commons.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:176)
          at org.apache.commons.dbcp.AbandonedTrace.init(AbandonedTrace.java:92)
          at 
org.apache.commons.dbcp.AbandonedTrace.<init>(AbandonedTrace.java:82)
          at 
org.apache.commons.dbcp.DelegatingStatement.<init>(DelegatingStatement.java:61)
          at 
org.apache.commons.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:224)
          at 
org.apache.commons.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:331)
          at 
org.apache.commons.dbcp.PoolableConnectionFactory.validateObject(PoolableConnectionFactory.java:312)
          at 
org.apache.commons.pool.impl.GenericObjectPool.evict(GenericObjectPool.java:1217)
          at 
org.apache.commons.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
          at java.util.TimerThread.mainLoop(Timer.java:512)
          at java.util.TimerThread.run(Timer.java:462)
{code}

--
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

        

Reply via email to