You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by AndyG <an...@orprovision.com> on 2013/01/14 10:56:26 UTC
Recent ManagedConnection changes have possibly broken something.
Will try and reproduce in a test case, but posting this now to give you a
heads up.
Not sure if ManagedConnection is responsible, but seems to be a likely
candidate.
Basic scenario is a test with 50 threads concurrently accessing a stateless
EJB. It initially looks like that connections in an active transaction are
being put back into the pool?
java.sql.SQLException: Cannot close a connection while a transaction is
still active.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.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.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedConnection.checkForTransactionInProgress(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedConnection.close(Unknown Source)
at
org.apache.commons.dbcp.DelegatingConnection.close(DelegatingConnection.java:247)
at
org.apache.commons.dbcp.PoolableConnection.reallyClose(PoolableConnection.java:122)
at
org.apache.commons.dbcp.managed.PoolableManagedConnection.reallyClose(PoolableManagedConnection.java:67)
at
org.apache.commons.dbcp.PoolableConnectionFactory.destroyObject(PoolableConnectionFactory.java:628)
at
org.apache.commons.pool.impl.GenericObjectPool.invalidateObject(GenericObjectPool.java:1286)
at
org.apache.commons.dbcp.AbandonedObjectPool.invalidateObject(AbandonedObjectPool.java:125)
at
org.apache.commons.dbcp.AbandonedObjectPool.removeAbandoned(AbandonedObjectPool.java:158)
at
org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:77)
at
org.apache.commons.dbcp.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:117)
at
org.apache.commons.dbcp.managed.ManagedConnection.<init>(ManagedConnection.java:55)
at
org.apache.commons.dbcp.managed.ManagedDataSource.getConnection(ManagedDataSource.java:77)
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at
org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
at
org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292)
at
org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
at
org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
at
org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82)
at
org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
at
org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy96.prepareStatement(Unknown Source)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:147)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1854)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1831)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
at org.hibernate.loader.Loader.doQuery(Loader.java:899)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311)
at org.hibernate.loader.Loader.loadEntity(Loader.java:2111)
at
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
at
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
at
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
at
org.hibernate.loader.entity.BatchingEntityLoader.load(BatchingEntityLoader.java:111)
at
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3887)
at
org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
at
org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
at
org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
at
org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
at
org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1078)
at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:175)
at
org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2424)
at org.hibernate.internal.SessionImpl.get(SessionImpl.java:974)
at
org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:807)
at
org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:781)
at
org.apache.openejb.persistence.JtaEntityManager.find(JtaEntityManager.java:157)
at
com.orprovision.spectrum.storage.bean.ocr.ApiOcrFontFactoryImpl.deleteOcrFont(ApiOcrFontFactoryImpl.java:478)
Andy.
--
View this message in context: http://openejb.979440.n4.nabble.com/Recent-ManagedConnection-changes-have-possibly-broken-something-tp4660257.html
Sent from the OpenEJB Dev mailing list archive at Nabble.com.
Re: Recent ManagedConnection changes have possibly broken something.
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi Andy,
to check it simply set DataSourceCreator = dbcp in the datasource
properties.
it doesn't use ManagedConnection.
*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*
2013/1/14 AndyG <an...@orprovision.com>
> Will try and reproduce in a test case, but posting this now to give you a
> heads up.
> Not sure if ManagedConnection is responsible, but seems to be a likely
> candidate.
>
> Basic scenario is a test with 50 threads concurrently accessing a stateless
> EJB. It initially looks like that connections in an active transaction are
> being put back into the pool?
>
> java.sql.SQLException: Cannot close a connection while a transaction is
> still active.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.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.generateCsSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown
> Source)
> at
>
> org.apache.derby.impl.jdbc.EmbedConnection.checkForTransactionInProgress(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.close(Unknown Source)
> at
>
> org.apache.commons.dbcp.DelegatingConnection.close(DelegatingConnection.java:247)
> at
>
> org.apache.commons.dbcp.PoolableConnection.reallyClose(PoolableConnection.java:122)
> at
>
> org.apache.commons.dbcp.managed.PoolableManagedConnection.reallyClose(PoolableManagedConnection.java:67)
> at
>
> org.apache.commons.dbcp.PoolableConnectionFactory.destroyObject(PoolableConnectionFactory.java:628)
> at
>
> org.apache.commons.pool.impl.GenericObjectPool.invalidateObject(GenericObjectPool.java:1286)
> at
>
> org.apache.commons.dbcp.AbandonedObjectPool.invalidateObject(AbandonedObjectPool.java:125)
> at
>
> org.apache.commons.dbcp.AbandonedObjectPool.removeAbandoned(AbandonedObjectPool.java:158)
> at
>
> org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:77)
> at
>
> org.apache.commons.dbcp.managed.ManagedConnection.updateTransactionStatus(ManagedConnection.java:117)
> at
>
> org.apache.commons.dbcp.managed.ManagedConnection.<init>(ManagedConnection.java:55)
> at
>
> org.apache.commons.dbcp.managed.ManagedDataSource.getConnection(ManagedDataSource.java:77)
> at
>
> org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
> at
>
> org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
> at
>
> org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292)
> at
>
> org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
> at
>
> org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
> at
>
> org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82)
> at
>
> org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
> at
>
> org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
> at $Proxy96.prepareStatement(Unknown Source)
> at
>
> org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:147)
> at
>
> org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)
> at
>
> org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145)
> at
> org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1854)
> at
> org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1831)
> at
> org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
> at org.hibernate.loader.Loader.doQuery(Loader.java:899)
> at
>
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
> at
>
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:2111)
> at
>
> org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
> at
>
> org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
> at
>
> org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
> at
>
> org.hibernate.loader.entity.BatchingEntityLoader.load(BatchingEntityLoader.java:111)
> at
>
> org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3887)
> at
>
> org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
> at
>
> org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
> at
>
> org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
> at
>
> org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
> at
>
> org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
> at
> org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1078)
> at
> org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:175)
> at
>
> org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2424)
> at org.hibernate.internal.SessionImpl.get(SessionImpl.java:974)
> at
>
> org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:807)
> at
>
> org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:781)
> at
>
> org.apache.openejb.persistence.JtaEntityManager.find(JtaEntityManager.java:157)
> at
>
> com.orprovision.spectrum.storage.bean.ocr.ApiOcrFontFactoryImpl.deleteOcrFont(ApiOcrFontFactoryImpl.java:478)
>
> Andy.
>
>
>
> --
> View this message in context:
> http://openejb.979440.n4.nabble.com/Recent-ManagedConnection-changes-have-possibly-broken-something-tp4660257.html
> Sent from the OpenEJB Dev mailing list archive at Nabble.com.
>