Mantis - Resin
Viewing Issue Advanced Details
3052 minor always 11-07-08 06:28 09-03-09 21:04
ferg  
ferg  
urgent  
closed 3.1.6  
fixed  
none    
none 4.0.2  
0003052: database connection pooling issue
I'm currently having a problem trying to upgrade one of our
applications from resin 3.0.x to 3.1.6. while the application runs
fine on 3.0.x when i try to run it on 3.1.6 the server locks up after
30-60 seconds of web requests. looking at the stack trace it appears
to be some sort of deadlock in the caucho database ConnectionPool
class.

I've attached a stack trace of what the threads look like immediately
after the server has been started and it stops accepting connections.
you can see that there are 336 threads stuck in a BLOCKED state trying
to create database connections while the only remaining 16 running
threads are the socket acceptors.

no exceptions are displayed in the logs and the code on our end does
not leave any database connections unclosed so i do not believe a leak
is an issue (this code runs great on 3.0.x for months at a time).

Thread 23959: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
 - com.caucho.jca.ConnectionPool.create(javax.resource.spi.ManagedConnectionFactory, javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo, boolean, com.caucho.jca.UserPoolItem) @bci=94, line=913 (Compiled frame)
 - com.caucho.jca.ConnectionPool.allocatePool(javax.resource.spi.ManagedConnectionFactory, javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo, com.caucho.jca.UserPoolItem) @bci=42, line=795 (Interpreted frame)
 - com.caucho.jca.ConnectionPool.allocate(javax.resource.spi.ManagedConnectionFactory, javax.security.auth.Subject, javax.resource.spi.ConnectionRequestInfo) @bci=49, line=756 (Interpreted frame)
 - com.caucho.jca.ConnectionPool.allocateConnection(javax.resource.spi.ManagedConnectionFactory, javax.resource.spi.ConnectionRequestInfo) @bci=6, line=567 (Interpreted frame)
 - com.caucho.sql.DataSourceImpl.getConnection() @bci=9, line=65 (Interpreted frame)
 - com.caucho.sql.DBPool.getConnection() @bci=4, line=701 (Interpreted frame)
 - org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(javax.sql.DataSource) @bci=79, line=113 (Interpreted frame)
 - org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy.getConnection() @bci=21, line=109 (Interpreted frame)
 - org.springframework.orm.ibatis.SqlMapClientTemplate.execute(org.springframework.orm.ibatis.SqlMapClientCallback) @bci=106, line=190 (Interpreted frame)
 - org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(org.springframework.orm.ibatis.SqlMapClientCallback) @bci=2, line=249 (Interpreted frame)
 - org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(java.lang.String, java.lang.Object) @bci=11, line=296 (Interpreted f

There are no notes attached to this issue.