Hello.

I encountered an issue that looks similar to Bug DBCP-270.
I wish to know:
1) Is it the same bug or a new one?
2) Which patch can I apply and how to apply it?
3) Will setting testWhileIdle="false" avoid the problem?

System info:
Tomcat 6.0.18, CentOS 5.2 64-bit, MySQL Connector/J 5.1.17
(I do not know which version of DBCP is bundled with Tomcat)

The partial thread dump and the JDBC config attached below.
I look forward to your kind assistance.  Thank you.

Regards,
Ying Chyn Ng
-----------------------------------------------------------------------

Found one Java-level deadlock:
=============================
"TP-Processor199":
  waiting to lock monitor 0x00002aaab043b980 (object 0x00002af7723e3c48, a 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool),
  which is held by "Timer-0"
"Timer-0":
  waiting to lock monitor 0x00000000168cf3b0 (object 0x00002af774c8e8b0, a 
org.apache.tomcat.dbcp.dbcp.PoolableConnection),
  which is held by "TP-Processor14"
"TP-Processor14":
  waiting to lock monitor 0x00002aaab043b980 (object 0x00002af7723e3c48, a 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool),
  which is held by "Timer-0"

Java stack information for the threads listed above:
===================================================
"TP-Processor199":
 at 
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.getNumIdle(GenericObjectPool.java:1061)
 - waiting to lock <0x00002af7723e3c48> (a 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool)
 at 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:78)
 at 
org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
 at 
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
 ...

"Timer-0":
 at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:176)
 - waiting to lock <0x00002af774c8e8b0> (a 
org.apache.tomcat.dbcp.dbcp.PoolableConnection)
 at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.init(AbandonedTrace.java:92)
 at org.apache.tomcat.dbcp.dbcp.AbandonedTrace.<init>(AbandonedTrace.java:82)
 at 
org.apache.tomcat.dbcp.dbcp.DelegatingStatement.<init>(DelegatingStatement.java:61)
 at 
org.apache.tomcat.dbcp.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:224)
 at 
org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:331)
 at 
org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.validateObject(PoolableConnectionFactory.java:312)
 at 
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.evict(GenericObjectPool.java:1217)
 ...

"TP-Processor14":
 at 
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1137)
 - waiting to lock <0x00002af7723e3c48> (a 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool)
 at 
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
 at 
org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool.returnObject(AbandonedObjectPool.java:112)
 at 
org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
 - locked <0x00002af774c8e8b0> (a 
org.apache.tomcat.dbcp.dbcp.PoolableConnection)
 at 
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:181)
...

----------------------------------------------------------------
JDBC configuration

    <Resource name="jdbc/GRID_DS_MYSQL" auth="Container"
        type="javax.sql.DataSource"
        maxActive="450" maxIdle="50" maxWait="10000"
        removeAbandoned="true" removeAbandonedTimeout="120"
        validationQuery="Select 1" testOnBorrow="true" testWhileIdle="true"
        timeBetweenEvictionRunsMillis="10000" minEvictableIdleTimeMillis="60000"
        driverClassName="com.mysql.jdbc.Driver" username="grid" 
password="q1w2e3r4"
        url="jdbc:mysql://localhost:3306/gridbackend?autoReconnect=true"
   />

Reply via email to