Hi
We are faced with the following exception in our application:
org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) at com.adventnet.management.transaction.TransactionAPI.beginHbnTxn(TransactionAPI.java:923) at com.adventnet.management.transaction.TransactionAPI.beginTxn(TransactionAPI.java:856) at com.adventnet.management.transaction.TransactionAPI.begin(TransactionAPI.java:314) at com.adventnet.nms.store.relational.RelationalObject.beginTxn(RelationalObject.java:2298) at com.adventnet.nms.store.relational.RelationalObject.init(RelationalObject.java:208) at com.adventnet.nms.store.relational.RelationalPolicyObject.init(RelationalPolicyObject.java:39) at com.adventnet.nms.store.relational.CommonPolicyToRelational.initForClass(CommonPolicyToRelational.java:145) at com.adventnet.nms.store.relational.CommonPolicyToRelational.<init>(CommonPolicyToRelational.java:76) at com.adventnet.management.policydb.CommonPolicyAPI.setPersistenceAPI(CommonPolicyAPI.java:63) at com.adventnet.management.policydb.CommonPolicyAPI.<init>(CommonPolicyAPI.java:43) at com.adventnet.management.policydb.NmsPolicyMgr.initialize(NmsPolicyMgr.java:115) at com.adventnet.management.policydb.NmsPolicyMgr.callMain(NmsPolicyMgr.java:99) at com.adventnet.nms.util.RunProcessSmall.runCommand(RunProcessSmall.java:97) at com.adventnet.nms.util.RunCmd.run(RunCmd.java:100) Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out. at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) ... 18 more Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@869113 -- timeout at awaitAvailable() at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317) at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
The following is the configuration in our hibernate.cfg.xml: <property name="hibernate.c3p0.min_size">6</property> <property name="hibernate.c3p0.max_size">35</property> <property name="nontransaction.connection">15</property> <property name="hibernate.connection.autocommit">true</property> <!--property name="hibernate.c3p0.max_statements">1000</property--> <property name="hibernate.c3p0.acquire_increment">1</property> <property name="hibernate.c3p0.idle_test_period">25200</property> <property name="hibernate.jdbc.batch_size">1000</property> <property name="hibernate.connection.isolation">2</property> <property name="enablecache">true</property>
As you can see, the maximum number of connection is 35 .Out of which the number of transaction connections are 20 and non-transaction connections are 15.
We have done debugging from our side and we could see that only 3 transaction connections have been taken from the connection pool and all have been committed successfully. We are not sure what has been causing this problem.
However, when we increase the total number of connections by 10 , i.e. to 45, this exception doesn't occur anymore.
Can someone please provide some insight? This is urgent.
|