You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2009/01/27 02:47:01 UTC

[jira] Resolved: (DBCP-281) [dbcp] Deadlock when evicting dbcp objects (testWhileIdle=true) [ re-open of DBCP-65]

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

Phil Steitz resolved DBCP-281.
------------------------------

       Resolution: Duplicate
    Fix Version/s: 1.3

Duplicates DBCP-270, which was fixed in r672097, when synchronization in AbandonedTrace#addTrace was changed to lock only the trace. 

> [dbcp] Deadlock when evicting dbcp objects (testWhileIdle=true) [ re-open of DBCP-65]
> -------------------------------------------------------------------------------------
>
>                 Key: DBCP-281
>                 URL: https://issues.apache.org/jira/browse/DBCP-281
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2.2
>         Environment: Operating System: All
> Platform: All
>            Reporter: craig mcmillan
>             Fix For: 1.3
>
>
> re-open of DBCP-65... it ain't fixed yet
> The GenericKeyedObjectPool$Evictor thread can still deadlock with dbcp
> objects.
> "Timer-1":
> 	at org.apache.commons.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
> 	- waiting to lock <0x13cb66c0> (a org.apache.commons.dbcp.PoolableConnection)
> 	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)
> 	- locked <0x0af4d498> (a org.apache.commons.pool.impl.GenericObjectPool)
> 	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)
> "extract_themes_from_message_command_container-2":
> 	at org.apache.commons.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
> 	- waiting to lock <0x0af4d498> (a org.apache.commons.pool.impl.GenericObjectPool)
> 	at org.apache.commons.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
> 	at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:87)
> 	- locked <0x13cb66c0> (a org.apache.commons.dbcp.PoolableConnection)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
> 	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.closeConnection(LocalDataSourceConnectionProvider.java:96)
> 	at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:451)
> 	at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:406)
> 	at org.hibernate.jdbc.ConnectionManager.afterTransaction(ConnectionManager.java:293)
> 	at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:221)
> 	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:119)
> 	at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:606)
> 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
> 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
> 	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
> 	at net.tramposys.log.context.hibernate.HibernateLogContextManager.createOrAssociateLogContextWithJmsMessage(HibernateLogContextManager.java:68)
> 	at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
> 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
> 	at $Proxy30.createOrAssociateLogContextWithJmsMessage(Unknown Source)
> 	at net.tramposys.commandq.jms.JmsCommandExecutor.onMessage(JmsCommandExecutor.java:59)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:531)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:466)
> 	at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:435)
> 	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:316)
> 	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:235)
> 	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:927)
> 	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:851)
> 	at java.lang.Thread.run(Thread.java:613)

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