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.

Reply via email to