[ 
https://issues.apache.org/jira/browse/DBCP-398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14487459#comment-14487459
 ] 

Shawn Heisey commented on DBCP-398:
-----------------------------------

I seem to be having this problem, or at least one that's very similar, with 
DBCP 2.1.

{noformat}
"b" prio=10 tid=0x00007fcc7450c800 nid=0x65e2 waiting on condition 
[0x00007fcc1bbb4000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000db121ea8> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
        at 
org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583)
        at 
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442)
        at 
org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
        at 
org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134)
        at com.REDACTED.idxbuild.db.Database.getConnection(Database.java:221)
        at com.REDACTED.idxbuild.db.Database.getColumnSet(Database.java:571)
        at com.REDACTED.idxbuild.solr.Chain.doReinsert(Chain.java:1332)
        - locked <0x00000000db0011c8> (a java.lang.Object)
        at com.REDACTED.idxbuild.solr.Chain.updateIndex(Chain.java:1985)
        at com.REDACTED.idxbuild.solr.Chain.run(Chain.java:2145)
{noformat}

This issue says fixed, but doesn't indicate which version.  Should I file a new 
issue, or sign up for the mailing list for further discussion?

I'm using mysql-connector-java-5.1.35-bin.jar for JDBC.  My validation query is 
"SELECT 1", and the validation timeout is 5.


> DBCP hangs on common pool borrowObject when PoolableConnection is used and 
> the underlying connection closed unexpectedly (connection resets/timouts)
> ----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DBCP-398
>                 URL: https://issues.apache.org/jira/browse/DBCP-398
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2, 1.3, 1.4, 2.0
>            Reporter: Sarvesh Sakalanaga
>         Attachments: DBCP-398.0.patch
>
>
> The bug is in org.apache.commons.dbcp.PoolableConnection as isClosed method 
> on this calls super.isClosed which returns true (as 
> DelegatingConnection::isClosed { _closed || _conn.isClosed() }). Since 
> PoolableConnection needs to release objects to pool even if the underlying 
> connection is closed the isClosed method should be overridden in this class 
> and should return _closed. This _closed is the delegating connection close 
> which will be set to false even if the underlying connection is closed 
> (_conn.isClosed). The fix should also not throw on PoolableConnection::Close 
> method if underlying connection is closed as this state is a valid state and 
> is expected.
> Also currently the way it stands the clients of PoolableConnection will/may 
> not call Close() as isClosed always returns true in this case.
> Below is the stack that the thread hangs on:
> ◾waiting on <0x00000007b5a50e48> (a 
> org.apache.commons.pool.impl.GenericObjectPool$Latch)
>  at java.lang.Object.wait(Object.java:503)
>  at 
> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104)
> ◾locked <0x00000007b5a50e48> (a 
> org.apache.commons.pool.impl.GenericObjectPool$Latch)
>  at 
> org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
>  at 
> org.datanucleus.store.rdbms.ConnectionProviderPriorityList.getConnection(ConnectionProviderPriorityList.java:57)
>  at 
> org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:354)
>  at 
> org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getXAResource(ConnectionFactoryImpl.java:314)
>  at 
> org.datanucleus.store.connection.ConnectionManagerImpl.enlistResource(ConnectionManagerImpl.java:386)
>  at 
> org.datanucleus.store.connection.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:252)
>  at 
> org.datanucleus.store.connection.AbstractConnectionFactory.getConnection(AbstractConnectionFactory.java:60)
>  at 
> org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:449)
>  at 
> org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:418)
>  at 
> org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:595)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to