You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2018/07/08 18:30:00 UTC
[jira] [Closed] (DBCP-512) Avoid exceptions when closing a
connection in mutli-threaded use case.
[ https://issues.apache.org/jira/browse/DBCP-512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Gregory closed DBCP-512.
-----------------------------
Resolution: Fixed
Fix Version/s: 2.5.0
> Avoid exceptions when closing a connection in mutli-threaded use case.
> ----------------------------------------------------------------------
>
> Key: DBCP-512
> URL: https://issues.apache.org/jira/browse/DBCP-512
> Project: Commons DBCP
> Issue Type: Improvement
> Reporter: Gary Gregory
> Assignee: Gary Gregory
> Priority: Major
> Fix For: 2.5.0
>
>
> Avoid exceptions when closing a connection in mutli-threaded use case.
> For example:
> {noformat}
> 11:56:34,397 WARN [arjuna] ARJUNA012108: CheckedAction::check - atomic action 0:ffffc0a86301:df08:5b42504f:1d078 aborting with 1 threads active!
> 11:56:34,397 WARN [arjuna] ARJUNA012077: Abort called on already aborted atomic action 0:ffffc0a86301:df08:5b42504f:1d078
> 11:56:34,416 WARN [arjuna] ARJUNA012121: TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,main] successfully canceled TX 0:ffffc0a86301:df08:5b42504f:1d078
> Pooled object created 2018-07-08 11:56:34 -0600 by the following code has not been returned to the pool:
> org.apache.commons.pool2.impl.ThrowableCallStack$Snapshot
> at org.apache.commons.pool2.impl.ThrowableCallStack.fillInStackTrace(ThrowableCallStack.java:71)
> at org.apache.commons.pool2.impl.DefaultPooledObject.allocate(DefaultPooledObject.java:193)
> at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:459)
> at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:365)
> at org.apache.commons.dbcp2.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:142)
> at org.apache.commons.dbcp2.managed.ManagedConnection.<init>(ManagedConnection.java:75)
> at org.apache.commons.dbcp2.managed.ManagedDataSource.getConnection(ManagedDataSource.java:80)
> at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563)
> at org.apache.commons.dbcp2.managed.TestConnectionWithNarayana.testConnectionInTimeout(TestConnectionWithNarayana.java:158)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
> at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
> at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
> at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
> at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:383)
> at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:344)
> at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)
> at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:417)
> org.h2.jdbc.JdbcSQLException: The database has been closed [90098-197]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
> at org.h2.message.DbException.get(DbException.java:179)
> at org.h2.message.DbException.get(DbException.java:155)
> at org.h2.message.DbException.get(DbException.java:144)
> at org.h2.engine.Database.checkPowerOff(Database.java:536)
> at org.h2.engine.Session.close(Session.java:877)
> at org.h2.jdbc.JdbcConnection.close(JdbcConnection.java:411)
> at org.apache.commons.dbcp2.DelegatingConnection.closeInternal(DelegatingConnection.java:228)
> at org.apache.commons.dbcp2.PoolableConnection.reallyClose(PoolableConnection.java:232)
> at org.apache.commons.dbcp2.managed.PoolableManagedConnection.reallyClose(PoolableManagedConnection.java:79)
> at org.apache.commons.dbcp2.PoolableConnectionFactory.destroyObject(PoolableConnectionFactory.java:367)
> at org.apache.commons.pool2.impl.GenericObjectPool.destroy(GenericObjectPool.java:921)
> at org.apache.commons.pool2.impl.GenericObjectPool.invalidateObject(GenericObjectPool.java:626)
> at org.apache.commons.pool2.impl.GenericObjectPool.removeAbandoned(GenericObjectPool.java:1056)
> at org.apache.commons.pool2.impl.GenericObjectPool.evict(GenericObjectPool.java:809)
> at org.apache.commons.pool2.impl.BaseGenericObjectPool$Evictor.run(BaseGenericObjectPool.java:1111)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)