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

Reply via email to