You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Metta <ma...@despatch.net> on 2008/06/19 10:22:15 UTC

DBCP Deadlock

I'm running TC 6.0.16 on 64Bit RH Linux 5.1

We're seeing a deadlock in the tomcat-dbcp - looks like it's to do with the
abandoned connection checking. I thought 6.0.16 used the commons-dbcp-1.2.2
release which supposedly fixes this issue?

=============================
"Timer-3":
  waiting to lock monitor 0x0000000053b40548 (object 0x00002aaabf3210f0, a
org.apache.tomcat.dbcp.dbcp.PoolableConnection),
  which is held by "TP-Processor27"
"TP-Processor27":
  waiting to lock monitor 0x0000000053b404d0 (object 0x00002aaab9fa8b08, a
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool),
  which is held by "Timer-3"

Java stack information for the threads listed above:
===================================================
"Timer-3":
        at
org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
        - waiting to lock <0x00002aaabf3210f0> (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)
        - locked <0x00002aaab9fa8b08> (a
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
        at
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)
"TP-Processor27":
        at
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
        - waiting to lock <0x00002aaab9fa8b08> (a
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
        at
org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
        at
org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
        - locked <0x00002aaabf3210f0> (a
org.apache.tomcat.dbcp.dbcp.PoolableConnection)
        ....
-- 
View this message in context: http://www.nabble.com/DBCP-Deadlock-tp17999703p17999703.html
Sent from the Tomcat - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: DBCP Deadlock

Posted by Mark Thomas <ma...@apache.org>.
On 14/06/2010 09:07, elankumaran wrote:
>
> Hi Filip Hanik,
>
> We are using the dbcp 1.2.2 with Tomcat 5&  6 version. We are experiencing
> the dead lock issue in the getNumIdle() method of GenericObjectPool class.
> Can i update to dpcp 1.4 version in order to fix the issue?

That would be a question for the users mailing list.

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: DBCP Deadlock

Posted by elankumaran <EL...@GMAIL.COM>.
Hi Filip Hanik,

We are using the dbcp 1.2.2 with Tomcat 5 & 6 version. We are experiencing
the dead lock issue in the getNumIdle() method of GenericObjectPool class.
Can i update to dpcp 1.4 version in order to fix the issue?

Thread dump:
"http-8080-Processor17" daemon prio=10 tid=0x00002aabdc017400 nid=0x2ec2
waiting for monitor entry [0x0000000042d99000..0x0000000042d9aa10]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at
org.apache.commons.pool.impl.GenericObjectPool.getNumIdle(GenericObjectPool.java:911)
	- waiting to lock <0x00002aab002a0b28> (a
org.apache.commons.dbcp.AbandonedObjectPool)
	at
org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:78)
	at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
	at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

Thanks in advance,
Elan


Filip Hanik - Dev Lists wrote:
> 
> I have submitted a patch for this to commons
> 
> https://issues.apache.org/jira/browse/DBCP-270
> 
> Filip
> 
> Metta wrote:
>> I'm running TC 6.0.16 on 64Bit RH Linux 5.1
>>
>> We're seeing a deadlock in the tomcat-dbcp - looks like it's to do with
>> the
>> abandoned connection checking. I thought 6.0.16 used the
>> commons-dbcp-1.2.2
>> release which supposedly fixes this issue?
>>
>> =============================
>> "Timer-3":
>>   waiting to lock monitor 0x0000000053b40548 (object 0x00002aaabf3210f0,
>> a
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection),
>>   which is held by "TP-Processor27"
>> "TP-Processor27":
>>   waiting to lock monitor 0x0000000053b404d0 (object 0x00002aaab9fa8b08,
>> a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool),
>>   which is held by "Timer-3"
>>
>> Java stack information for the threads listed above:
>> ===================================================
>> "Timer-3":
>>         at
>> org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
>>         - waiting to lock <0x00002aaabf3210f0> (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)
>>         - locked <0x00002aaab9fa8b08> (a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
>>         at java.util.TimerThread.mainLoop(Timer.java:512)
>>         at java.util.TimerThread.run(Timer.java:462)
>> "TP-Processor27":
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
>>         - waiting to lock <0x00002aaab9fa8b08> (a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
>>         at
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
>>         - locked <0x00002aaabf3210f0> (a
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection)
>>         ....
>>   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/DBCP-Deadlock-tp17999703p28876880.html
Sent from the Tomcat - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: DBCP Deadlock

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
I have submitted a patch for this to commons

https://issues.apache.org/jira/browse/DBCP-270

Filip

Metta wrote:
> I'm running TC 6.0.16 on 64Bit RH Linux 5.1
>
> We're seeing a deadlock in the tomcat-dbcp - looks like it's to do with the
> abandoned connection checking. I thought 6.0.16 used the commons-dbcp-1.2.2
> release which supposedly fixes this issue?
>
> =============================
> "Timer-3":
>   waiting to lock monitor 0x0000000053b40548 (object 0x00002aaabf3210f0, a
> org.apache.tomcat.dbcp.dbcp.PoolableConnection),
>   which is held by "TP-Processor27"
> "TP-Processor27":
>   waiting to lock monitor 0x0000000053b404d0 (object 0x00002aaab9fa8b08, a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool),
>   which is held by "Timer-3"
>
> Java stack information for the threads listed above:
> ===================================================
> "Timer-3":
>         at
> org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
>         - waiting to lock <0x00002aaabf3210f0> (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)
>         - locked <0x00002aaab9fa8b08> (a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
>         at java.util.TimerThread.mainLoop(Timer.java:512)
>         at java.util.TimerThread.run(Timer.java:462)
> "TP-Processor27":
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
>         - waiting to lock <0x00002aaab9fa8b08> (a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
>         at
> org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
>         - locked <0x00002aaabf3210f0> (a
> org.apache.tomcat.dbcp.dbcp.PoolableConnection)
>         ....
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: DBCP Deadlock

Posted by James Abley <ja...@gmail.com>.
Hi,

I'm running Tomcat 6.0.18 and still see this issue. Can you provide more
information about how one might disable background validation, or when a
version of Tomcat might be released does not contain this issue [1]? My
resource is currently defined like this:

<Resource name="jdbc/db" type="javax.sql.DataSource"
      auth="Container"
      description="MySQL database Resource" username="user"
      password="pass"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://mysql-host:3306/my-db"
      maxActive="100" maxIdle="10"
      testWhileIdle="true"
      timeBetweenEvictionRunsMillis ="10000"
      minEvictableIdleTimeMillis ="600000"
      validationQuery="select 1"/>

I think that disabling background validation means I should remove the
testWhileIdle attribute and instead use testOnBorrow [2], but I would like
to confirm.

Cheers,

James

[1]
http://svn.apache.org/repos/asf/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
[2]
http://dev.mysql.com/doc/refman/5.1/en/connector-j-usagenotes-j2ee.html#connector-j-usagenotes-tomcat


Filip Hanik - Dev Lists wrote:
> 
> Tomcat uses 1.2.2 in that version, so I would suggest not using the 
> background validation at this point
> 
> Filip
> 
> Metta wrote:
>> I'm running TC 6.0.16 on 64Bit RH Linux 5.1
>>
>> We're seeing a deadlock in the tomcat-dbcp - looks like it's to do with
>> the
>> abandoned connection checking. I thought 6.0.16 used the
>> commons-dbcp-1.2.2
>> release which supposedly fixes this issue?
>>
>> =============================
>> "Timer-3":
>>   waiting to lock monitor 0x0000000053b40548 (object 0x00002aaabf3210f0,
>> a
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection),
>>   which is held by "TP-Processor27"
>> "TP-Processor27":
>>   waiting to lock monitor 0x0000000053b404d0 (object 0x00002aaab9fa8b08,
>> a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool),
>>   which is held by "Timer-3"
>>
>> Java stack information for the threads listed above:
>> ===================================================
>> "Timer-3":
>>         at
>> org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
>>         - waiting to lock <0x00002aaabf3210f0> (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)
>>         - locked <0x00002aaab9fa8b08> (a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
>>         at java.util.TimerThread.mainLoop(Timer.java:512)
>>         at java.util.TimerThread.run(Timer.java:462)
>> "TP-Processor27":
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
>>         - waiting to lock <0x00002aaab9fa8b08> (a
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>>         at
>> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
>>         at
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
>>         - locked <0x00002aaabf3210f0> (a
>> org.apache.tomcat.dbcp.dbcp.PoolableConnection)
>>         ....
>>   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/DBCP-Deadlock-tp17999703p21910567.html
Sent from the Tomcat - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: DBCP Deadlock

Posted by Filip Hanik - Dev Lists <de...@hanik.com>.
Tomcat uses 1.2.2 in that version, so I would suggest not using the 
background validation at this point

Filip

Metta wrote:
> I'm running TC 6.0.16 on 64Bit RH Linux 5.1
>
> We're seeing a deadlock in the tomcat-dbcp - looks like it's to do with the
> abandoned connection checking. I thought 6.0.16 used the commons-dbcp-1.2.2
> release which supposedly fixes this issue?
>
> =============================
> "Timer-3":
>   waiting to lock monitor 0x0000000053b40548 (object 0x00002aaabf3210f0, a
> org.apache.tomcat.dbcp.dbcp.PoolableConnection),
>   which is held by "TP-Processor27"
> "TP-Processor27":
>   waiting to lock monitor 0x0000000053b404d0 (object 0x00002aaab9fa8b08, a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool),
>   which is held by "Timer-3"
>
> Java stack information for the threads listed above:
> ===================================================
> "Timer-3":
>         at
> org.apache.tomcat.dbcp.dbcp.AbandonedTrace.addTrace(AbandonedTrace.java:175)
>         - waiting to lock <0x00002aaabf3210f0> (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)
>         - locked <0x00002aaab9fa8b08> (a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool$Evictor.run(GenericObjectPool.java:1341)
>         at java.util.TimerThread.mainLoop(Timer.java:512)
>         at java.util.TimerThread.run(Timer.java:462)
> "TP-Processor27":
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObjectToPool(GenericObjectPool.java:1136)
>         - waiting to lock <0x00002aaab9fa8b08> (a
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
>         at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.returnObject(GenericObjectPool.java:1076)
>         at
> org.apache.tomcat.dbcp.dbcp.PoolableConnection.close(PoolableConnection.java:87)
>         - locked <0x00002aaabf3210f0> (a
> org.apache.tomcat.dbcp.dbcp.PoolableConnection)
>         ....
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org