Re: [c3p0-users] A checked-out resource is overdue?
Status: Beta
Brought to you by:
swaldman
From: Steve W. <swa...@mc...> - 2008-11-19 07:46:53
|
Aaron, It looks like your application may be architected to hold an open Connection. This is not a great idea in a world with Connection pools, but this was once a very common thing to do. You've set Connections to expire if not returned after 10 seconds. It looks like this is happening, then your app tries to use the expired Connection (and nothing good comes of that). How does your application manage its Connections? Does it acquire and hold, or acquire, use, and return? If it is the latter, you may want to set the expiration time a bit longer, if your app runs potentially long queries under potentially heavy load. (Actually, you want to turn off unreturnedConnectionTimeout and debugUnreturnedConnectionStackTraces once you've debugged any Connection leaks.) If your app is holding long-lived Connections, then you definitely want to turn expiration off, and you want to be sure that maxPoolSize is significantly larger than the number of Connections it might hold. (But if you hold long-lived Connections, there's little use in having a Connection pool.) good luck, Steve On Nov 17, 2008, at 1:56 PM, Aaron Zeckoski wrote: > I am getting this failure in my test cases and I am unsure why it is > happening. All that I am doing in the code which is failing is > executing some DDL when a service starts up. It is in a test case so > there are no possible threading issues. I don't have any issues if I > switch to a simple spring datasource so I am at a loss here. Has > anyone encountered this before or possibly have any suggestions on > what to try? Googling has turned up almost nothing on this error > message or snippets of it. > There is not noticeable delay when this is running so it seems the > connection is becoming "overdue" instantly. I am using the newest c3p0 > that is available (). > > INFO Created DSpace DataSource: > org > .apache > .derby > .jdbc > .EmbeddedDriver:jdbc:derby:DSpaceDerby:com > .mchange.v2.c3p0.ComboPooledDataSource > [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay > -> 1000, autoCo > mmitOnClose -> false, automaticTestTable -> null, > breakAfterAcquireFailure -> false, checkoutTimeout -> 0, > connectionCustomizerClassName -> > org.dspace.database.DSpaceTestingConnectionCustomizer, > connectionTesterClassName > -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName > -> 2rvxwj7x1bngh1fw8wvnj|e8c1ec, debugUnreturnedConnectionStackTraces > -> true, description -> null, driverClass -> > org.apache.derby.jdbc.EmbeddedDriver > , factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> > false, identityToken -> 2rvxwj7x1bngh1fw8wvnj|e8c1ec, > idleConnectionTestPeriod -> 0, initialPoolSize -> 1, jdbcUrl -> > jdbc:derby:DSpaceDerby, maxAdmini > strativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, > maxIdleTimeExcessConnections -> 0, maxPoolSize -> 1, maxStatements -> > 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads > -> 3, numThread > sAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, > properties -> {user=******, password=******}, propertyCycle -> 0, > testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, > unreturnedConnectionTi > meout -> 10, usesTraditionalReflectiveProxies -> false ] [2008-11-17 > 18:36:29,736] (DSpaceDataSource.java:185) > INFO init [2008-11-17 18:36:29,790] (DatabaseIdEidMapping.java:52) > INFO A checked-out resource is overdue, and will be destroyed: > com.mchange.v2.c3p0.impl.NewPooledConnection@be5303 [2008-11-17 > 18:39:37,153] (BasicResourcePool.java:1392) > INFO Logging the stack trace by which the overdue resource was > checked-out. [2008-11-17 18:39:37,161] (BasicResourcePool.java:1395) > java.lang.Exception: DEBUG ONLY: Overdue resource check-out stack > trace. > at > com > .mchange > .v2 > .resourcepool > .BasicResourcePool.checkoutResource(BasicResourcePool.java:506) > at > com > .mchange > .v2 > .c3p0 > .impl > .C3P0PooledConnectionPool > .checkoutPooledConnection(C3P0PooledConnectionPool.java:525) > at > com > .mchange > .v2 > .c3p0 > .impl > .AbstractPoolBackedDataSource > .getConnection(AbstractPoolBackedDataSource.java:128) > at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy > $ > LazyConnectionInvocationHandler > .getTargetConnection(LazyConnectionDataSourceProxy.java:389) > at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy > $ > LazyConnectionInvocationHandler > .invoke(LazyConnectionDataSourceProxy.java:364) > at $Proxy10.createStatement(Unknown Source) > at > org > .sakaiproject > .genericdao > .util > .CloseHookConnectionWrapper > .createStatement(CloseHookConnectionWrapper.java:77) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > 390) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > 429) > at > org > .sakaiproject > .genericdao > .springjdbc.JdbcGenericDao.executeDDLforType(JdbcGenericDao.java:934) > at > org > .sakaiproject > .genericdao > .springjdbc.JdbcGenericDao.initPersistentClasses(JdbcGenericDao.java: > 479) > at > org > .sakaiproject > .genericdao.springjdbc.JdbcGenericDao.initDao(JdbcGenericDao.java:568) > at > org > .sakaiproject > .genericdao.springjdbc.JdbcGenericDao.startup(JdbcGenericDao.java:504) > at > org > .dspace > .services > .mapping.DatabaseIdEidMapping.<init>(DatabaseIdEidMapping.java:77) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun > .reflect > .NativeConstructorAccessorImpl > .newInstance(NativeConstructorAccessorImpl.java:39) > at > sun > .reflect > .DelegatingConstructorAccessorImpl > .newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:494) > at > org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java: > 100) > at > org > .springframework > .beans > .factory > .support > .SimpleInstantiationStrategy > .instantiate(SimpleInstantiationStrategy.java:87) > at > org > .springframework > .beans > .factory > .support > .ConstructorResolver.autowireConstructor(ConstructorResolver.java:248) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .createBeanInstance(AbstractAutowireCapableBeanFactory.java:835) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .doCreateBean(AbstractAutowireCapableBeanFactory.java:440) > at > org > .springframework > .beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .createBean(AbstractAutowireCapableBeanFactory.java:380) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:264) > at > org > .springframework > .beans > .factory > .support > .DefaultSingletonBeanRegistry > .getSingleton(DefaultSingletonBeanRegistry.java:222) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > at > org > .springframework > .beans > .factory > .support > .DefaultListableBeanFactory > .preInstantiateSingletons(DefaultListableBeanFactory.java:429) > at > org > .springframework > .context > .support > .AbstractApplicationContext > .finishBeanFactoryInitialization(AbstractApplicationContext.java:728) > at > org > .springframework > .context > .support > .AbstractApplicationContext.refresh(AbstractApplicationContext.java: > 380) > at > org > .dspace > .servicemanager > .spring.SpringServiceManager.startup(SpringServiceManager.java:195) > at > org > .dspace > .servicemanager > .DSpaceServiceManager.startup(DSpaceServiceManager.java:222) > at > org > .dspace.servicemanager.DSpaceKernelImpl.start(DSpaceKernelImpl.java: > 147) > at org.dspace.DSpaceAbstractTest.initKernel(DSpaceAbstractTest.java: > 51) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun > .reflect > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.junit.internal.runners.ClassRoadie.runBefores(ClassRoadie.java:49) > at > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java: > 36) > at > org > .junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java: > 42) > at > org > .eclipse > .jdt > .internal > .junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) > at > org > .eclipse > .jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org > .eclipse > .jdt > .internal > .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org > .eclipse > .jdt > .internal > .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org > .eclipse > .jdt > .internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org > .eclipse > .jdt > .internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: > 196) > INFO Destroying connection (2rvxwj7x1bngh1fw8wvnj|e8c1ec): > org.apache.derby.impl.jdbc.EmbedConnection30@16458356 (XID = 144), > (SESSIONID = 1), (DATABASE = DSpaceDerby), (DRDAID = null) > [2008-11-17 18:39:37,167] (DSpace > TestingConnectionCustomizer.java:41) > INFO Aquiring connection (2rvxwj7x1bngh1fw8wvnj|e8c1ec): > org.apache.derby.impl.jdbc.EmbedConnection30@16036618 (XID = 162), > (SESSIONID = 2), (DATABASE = DSpaceDerby), (DRDAID = null) > [2008-11-17 18:39:37,167] (DSpaceTe > stingConnectionCustomizer.java:36) > WARN [c3p0] A PooledConnection that has already signalled a Connection > error is still in use! [2008-11-17 18:51:12,254] > (NewPooledConnection.java:486) > WARN [c3p0] Another error has occurred [ java.sql.SQLException: No > current connection. ] which will not be reported to listeners! > [2008-11-17 18:51:12,258] (NewPooledConnection.java:487) > java.sql.SQLException: No current connection. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.createStatement(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.createStatement(Unknown > Source) > at > com > .mchange > .v2 > .c3p0 > .impl.NewProxyConnection.createStatement(NewProxyConnection.java:96) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun > .reflect > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy > $ > LazyConnectionInvocationHandler > .invoke(LazyConnectionDataSourceProxy.java:364) > at $Proxy10.createStatement(Unknown Source) > at > org > .sakaiproject > .genericdao > .util > .CloseHookConnectionWrapper > .createStatement(CloseHookConnectionWrapper.java:77) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > 390) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > 429) > at > org > .sakaiproject > .genericdao > .springjdbc.JdbcGenericDao.executeDDLforType(JdbcGenericDao.java:944) > at > org > .sakaiproject > .genericdao > .springjdbc.JdbcGenericDao.initPersistentClasses(JdbcGenericDao.java: > 479) > at > org > .sakaiproject > .genericdao.springjdbc.JdbcGenericDao.initDao(JdbcGenericDao.java:568) > at > org > .sakaiproject > .genericdao.springjdbc.JdbcGenericDao.startup(JdbcGenericDao.java:504) > at > org > .dspace > .services > .mapping.DatabaseIdEidMapping.<init>(DatabaseIdEidMapping.java:77) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun > .reflect > .NativeConstructorAccessorImpl > .newInstance(NativeConstructorAccessorImpl.java:39) > at > sun > .reflect > .DelegatingConstructorAccessorImpl > .newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:494) > at > org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java: > 100) > at > org > .springframework > .beans > .factory > .support > .SimpleInstantiationStrategy > .instantiate(SimpleInstantiationStrategy.java:87) > at > org > .springframework > .beans > .factory > .support > .ConstructorResolver.autowireConstructor(ConstructorResolver.java:248) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .createBeanInstance(AbstractAutowireCapableBeanFactory.java:835) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .doCreateBean(AbstractAutowireCapableBeanFactory.java:440) > at > org > .springframework > .beans.factory.support.AbstractAutowireCapableBeanFactory > $1.run(AbstractAutowireCapableBeanFactory.java:409) > at java.security.AccessController.doPrivileged(Native Method) > at > org > .springframework > .beans > .factory > .support > .AbstractAutowireCapableBeanFactory > .createBean(AbstractAutowireCapableBeanFactory.java:380) > at org.springframework.beans.factory.support.AbstractBeanFactory > $1.getObject(AbstractBeanFactory.java:264) > at > org > .springframework > .beans > .factory > .support > .DefaultSingletonBeanRegistry > .getSingleton(DefaultSingletonBeanRegistry.java:222) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) > at > org > .springframework > .beans > .factory > .support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) > at > org > .springframework > .beans > .factory > .support > .DefaultListableBeanFactory > .preInstantiateSingletons(DefaultListableBeanFactory.java:429) > at > org > .springframework > .context > .support > .AbstractApplicationContext > .finishBeanFactoryInitialization(AbstractApplicationContext.java:728) > at > org > .springframework > .context > .support > .AbstractApplicationContext.refresh(AbstractApplicationContext.java: > 380) > at > org > .dspace > .servicemanager > .spring.SpringServiceManager.startup(SpringServiceManager.java:195) > at > org > .dspace > .servicemanager > .DSpaceServiceManager.startup(DSpaceServiceManager.java:222) > at > org > .dspace.servicemanager.DSpaceKernelImpl.start(DSpaceKernelImpl.java: > 147) > at org.dspace.DSpaceAbstractTest.initKernel(DSpaceAbstractTest.java: > 51) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun > .reflect > .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun > .reflect > .DelegatingMethodAccessorImpl > .invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.junit.internal.runners.ClassRoadie.runBefores(ClassRoadie.java:49) > at > org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java: > 36) > at > org > .junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java: > 42) > at > org > .eclipse > .jdt > .internal > .junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) > at > org > .eclipse > .jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org > .eclipse > .jdt > .internal > .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org > .eclipse > .jdt > .internal > .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org > .eclipse > .jdt > .internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org > .eclipse > .jdt > .internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: > 196) > > -- > Aaron Zeckoski (aa...@vt...) > Senior Research Engineer - CARET - Cambridge University > [http://bugs.sakaiproject.org/confluence/display/~aaronz/] > Sakai Fellow - [http://aaronz-sakai.blogspot.com/] > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge > Build the coolest Linux based applications with Moblin SDK & win > great prizes > Grand prize is a trip for two to an Open Source event anywhere in > the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > c3p0-users mailing list > c3p...@li... > https://lists.sourceforge.net/lists/listinfo/c3p0-users ~oo~ Steve Waldman swa...@mc... |