C3P0 Version:- c3p0-0.9.1.2
---------------------
[Timer-0] (ThreadPoolAsynchronousRunner.java:608) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@180bf44 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
[Timer-0] (ThreadPoolAsynchronousRunner.java:624) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@180bf44 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 0
Active Tasks:
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@787e7e
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@b8a136
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@15fe5b9
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,]
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,]
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,]
Database: MySQL
C3P0 configuration:-
------------------------------
<Resource auth="Container"
driverClass="com.mysql.jdbc.Driver"
maxPoolSize="50"
minPoolSize="10"
acquireIncrement="1"
name="jdbc/DB"
user="root"
password=""
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
maxIdleTime="2700"
idleConnectionTestPeriod="600"
maxIdleTimeExcessConnections="300"
jdbcUrl="jdbc:mysql://localhost/abc?autoReconnect=true" />
I tried with following parameters also but does not work.
acquireIncrement="5"
numHelperThreads="50"
maxAdministrativeTaskTime="1200"
unreturnedConnectionTimeout="600"
Still getting the apprent dead lock problem.
Hi subesingh1981,
Your java application is unable to connect database. Please make sure you are able to connect database with proper credentials using jdbc driver. Then start your application.
Try connecting to db using any other client from launch pad.
Hi,
Application is able to make connection with MySQL database and fetch data from db. Problem come when application keep running for a week. Some time it come in two or three days.
1) Is this problem resolved in latest version of C3P0 c3p0-0.9.2-pre1?
c3p0-0.9.2-pre1.jar
c3p0-oracle-thin-extras-0.9.2-pre1.jar
mchange-commons-0.2.jar
mysql-connector-java-5.1.16-bin.jar
2) is "autoReconnect = false" will solve this problem?
For example:- dbcUrl="jdbc:mysql://localhost/abdb?autoReconnect=false
3) is attribute "useScatteredAcquireTask=true" is applicable only in latest version of C3P0 c3p0-0.9.2-pre1? Does it work in my case?
Waiting for kind reply.
Thanks,
Sube
Any suggestion to solve this issue.
Please try c3p0-0.9.2-pre1.jar. There is no need to set "useScatteredAcquireTask=true" -- that is true by default in c3p0-0.9.2-pre1. If you want to stick with c3p0-0.9.1.2 you can try setting this parameter. It may help: you are deadlocking in Connection acquisition and destruction for the database.
However, your underlying problem is that attempts to acquire and/or destroy Connections from your database are hanging for a long time, neither succeeding nor failing with an Exception. If they are only hanging for while, but not forever, the newer version / useScatteredAcquireTask may help. But if Connection acquisition/destruction attempts do hang indefinitely, eventually they will tie up all Threads in the Thread pool, provoking a deadlock. You need to figure out why c3p0 is unable to quickly acquire/destroy Connections under your configuration.
Hi Swaldman,
As per your suggestion application testing going on latest C3P0 version c3p0-0.9.2-pre1. But one some server still we are facing same issue.
My application has 5 or 6 large XML (around 10MB to 20MB) . Parsing and insertion of these xml files data in MySQL db take 15 to 20 minutes.
Due to it application not able to quickly acquire/destroy db connections.
Please suggest following configuration help in solving problem.
<Resource auth="Container"
driverClass="com.mysql.jdbc.Driver"
maxPoolSize="50"
minPoolSize="10"
acquireIncrement="5"
numHelperThreads="50"
maxAdministrativeTaskTime="1200"
name="jdbc/DB"
user="root"
password=""
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
maxIdleTime="2700"
idleConnectionTestPeriod="600"
maxIdleTimeExcessConnections="300"
debugUnreturnedConnectionStackTraces="false"
unreturnedConnectionTimeout="1500"
jdbcUrl="jdbc:mysql://localhost/apcdb?autoReconnect=true" />
Waiting for kind reply.
Thanks,
Sube
Hi,
Any update. Waiting for kind reply.
Thanks,
Sube
Still facing Apprent deadlock problem with C3P0 version: 0.9.2.1
Database: MySQLDB 5.0
2013-05-01 07:35:04,950 WARN [C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-AdminTaskTimer] (ThreadPoolAsynchronousRunner.java:743) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@867fbc -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2013-05-01 07:35:07,795 WARN [C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-AdminTaskTimer] (ThreadPoolAsynchronousRunner.java:759) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@867fbc -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@b4f5a5
on thread: C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@6b5d71
on thread: C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#1
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@c3e37a
on thread: C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#2
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@8b8802
Pool thread stack traces:
Thread[C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#0,5,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)
com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3049)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3503)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3492)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4043)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2758)
com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4179)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3582)
com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2348)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2306)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:412)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Thread[C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#1,5,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)
com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3049)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3503)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3492)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4043)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2758)
com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4179)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3582)
com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2348)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2306)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:412)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Thread[C3P0PooledConnectionPoolManager[identityToken->2rxa168uj3rqs1fdw6wc|d3c65d]-HelperThread-#2,5,main]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)
com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3049)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3503)
com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3492)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4043)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2758)
com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4179)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3582)
com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2348)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2306)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:412)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Hi,
I'm getting similar APPARENT DEADLOCK in my application. I'm curious to know the possible reasons and fixes(if any).
C3P0 version :- c3p0-0.9.1.2
Hibernate version :- version 3.2.7
Hibernate's c3p0 properties used :-
hibernate.c3p0.min_size = 5
hibernate.c3p0.max_size = 20
hibernate.c3p0.idle_test_period = 10
hibernate.c3p0.timeout = 100
hibernate.c3p0.aquire_increment = 1
The exception trace ....
2013-08-03 08:23:27,644 WARN [Timer-10] (ThreadPoolAsynchronousRunner.java:608) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4e766d -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2013-08-03 08:23:27,651 WARN [Timer-10] (ThreadPoolAsynchronousRunner.java:624) - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4e766d -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@95f44f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask@da9f0c (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@fff12b (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1325c4f
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,[ORB=_it_orb_id_1,Pool=1]]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
oracle.net.ns.Packet.receive(Unknown Source)
oracle.net.ns.DataPacket.receive(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:106)
oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1175)
com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:549)
com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:234)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470)
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,[ORB=_it_orb_id_1,Pool=1]]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
oracle.net.ns.Packet.receive(Unknown Source)
oracle.net.ns.DataPacket.receive(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:106)
oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:464)
oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:1175)
com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:549)
com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:234)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470)
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,[ORB=_it_orb_id_1,Pool=1]]
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
oracle.net.ns.Packet.receive(Unknown Source)
oracle.net.ns.DataPacket.receive(Unknown Source)
oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.net.ns.NetInputStream.read(Unknown Source)
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1099)
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:266)
oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:357)
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)</init></init>
I encounterred this problem too with 0.9.5-pre5. But I will provide some background here. The problem happens when there is network problem between the pool and the db server. I used commons-dbcp firstly. When there is network problem, dbcp reports pool error:
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object.
The statistics of the pool is this: NumActive: 0, NumIdle: 0. The pool is configured with 30 max connections. There is absolutely no connection leak from the application. So those connections just disappeared or went out of the control of the pool somehow because of the network problem(I guess it's network hanging). So I switched to c3p0 but encounterred this "APPARENT DEADLOCK" error:
WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@5fae696c -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pe
nding tasks!
WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@5fae696c -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@4f68fccd
on thread: C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#0
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@75ad1f75
on thread: C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#1
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@38ec76ae
on thread: C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#2
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@2c63b6b4
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@466ffa30
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@61928970
Pool thread stack traces:
Thread[C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#0,5,main]
java.lang.Object.wait(Native Method)
org.postgresql.Driver$ConnectThread.getResult(Driver.java:364)
org.postgresql.Driver.connect(Driver.java:271)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Thread[C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#2,5,main]
java.lang.Object.wait(Native Method)
org.postgresql.Driver$ConnectThread.getResult(Driver.java:364)
org.postgresql.Driver.connect(Driver.java:271)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Thread[C3P0PooledConnectionPoolManager[identityToken->u8rqptigyxqv4nwdgk|35549f94]-HelperThread-#1,5,main]
java.lang.Object.wait(Native Method)
org.postgresql.Driver$ConnectThread.getResult(Driver.java:364)
org.postgresql.Driver.connect(Driver.java:271)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
Some threads dumping here:
"PostgreSQL JDBC driver connection thread" daemon prio=10 tid=0x00007f95c8050000 nid=0x1e35 waiting for monitor entry [0x00007f9632ceb000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:102)</init>
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.access$100(Driver.java:47)
at org.postgresql.Driver$ConnectThread.run(Driver.java:308)
at java.lang.Thread.run(Thread.java:679)</init></init></init></init>
"PostgreSQL JDBC driver connection thread" daemon prio=10 tid=0x00007f95f4006000 nid=0x1e2a waiting for monitor entry [0x00007f9633af9000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:102)</init>
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.access$100(Driver.java:47)
at org.postgresql.Driver$ConnectThread.run(Driver.java:308)
at java.lang.Thread.run(Thread.java:679)</init></init></init></init>
"PostgreSQL JDBC driver connection thread" daemon prio=10 tid=0x00007f95ec001800 nid=0x1e29 waiting for monitor entry [0x00007f9631ddc000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:102)</init>
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.access$100(Driver.java:47)
at org.postgresql.Driver$ConnectThread.run(Driver.java:308)
at java.lang.Thread.run(Thread.java:679)</init></init></init></init>