You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Stuart Bedoll <be...@us.ibm.com> on 2008/01/13 20:50:55 UTC
EntityManager lifecycle and garbage collection
We have a lower software layer that creates EntityManager intances for each
transaction on the stack and leaves it for garbage collection without
issuing a close. We are getting exceptions when running transactions (like
the ones below). My assumption is that this is not a good practice since a
close should be issued right away to release resources (connections to the
pool) and not wait for a garbage collection event. Otherwise we could (or
are) causing database connection issues.
Caused by:
fpa.framework.exceptions.FPADataException: Exception while Executing the
Query
at
fpa.fw.ds.jpadataadapter.JPADataSourceAdapter.executeQuery(JPADataSourceAdapter.java:291)
at
fpa.common.di.dataservices.fpu.GetFPUDIMediatorFunc.execute(GetFPUDIMediatorFunc.java:84)
... 25 more
Caused by:
<1.0.0-SNAPSHOT-SNAPSHOT nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Io exception: Got
minus one from a read callDSRA0010E: SQL State = null, Error Code = 17,002
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3789)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:727)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getConnection(JDBCStoreManager.java:211)
at
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:346)
at
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:326)
at
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1221)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:989)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:798)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:768)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:764)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:230)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
at
fpa.fw.ds.jpadataadapter.JPADataSourceAdapter.executeQuery(JPADataSourceAdapter.java:279)
... 26 more
Caused by:
com.ibm.websphere.ce.cm.StaleConnectionException: Io exception: Got minus
one from a read callDSRA0010E: SQL State = null, Error Code = 17,002
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
at
com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:523)
at
com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:578)
at
com.ibm.ws.rsadapter.AdapterUtil.mapException(AdapterUtil.java:2041)
at
com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:1189)
at
com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:1055)
at
com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1811)
at
com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1543)
at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:2215)
at
com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:896)
at
com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:596)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:431)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:400)
at
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:106)
at
org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:87)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:738)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:723)
OR
Caused by:
fpa.framework.exceptions.FPADataException: Exception while Executing the
Query
at
fpa.fw.ds.jpadataadapter.JPADataSourceAdapter.executeQuery(JPADataSourceAdapter.java:292)
at
fpa.common.di.dataservices.fpu.GetFPUDIMediatorFunc.execute(GetFPUDIMediatorFunc.java:86)
... 25 more
Caused by:
<1.0.0-SNAPSHOT-SNAPSHOT nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Io exception: Got
minus one from a read call
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3789)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
at
org.apache.openjpa.jdbc.sql.OracleDictionary.ensureDriverVendor(OracleDictionary.java:248)
at
org.apache.openjpa.jdbc.sql.OracleDictionary.toSelect(OracleDictionary.java:357)
at
org.apache.openjpa.jdbc.sql.DBDictionary.toSelect(DBDictionary.java:1968)
at
org.apache.openjpa.jdbc.sql.SelectImpl.toSelect(SelectImpl.java:212)
at
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:343)
at
org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:326)
at
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1221)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:989)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:798)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:768)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:764)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:230)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:269)
at
fpa.fw.ds.jpadataadapter.JPADataSourceAdapter.executeQuery(JPADataSourceAdapter.java:280)
... 26 more
Caused by:
java.sql.SQLException: Io exception: Got minus one from a read call
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:254)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
at
oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
at
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at
org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:73)
at
org.apache.openjpa.jdbc.schema.SimpleDriverDataSource.getConnection(SimpleDriverDataSource.java:68)
at
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:113)
at
org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:93)
at
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:113)
at
org.apache.openjpa.jdbc.schema.DataSourceFactory$DefaultsDataSource.getConnection(DataSourceFactory.java:269)
at
org.apache.openjpa.jdbc.sql.OracleDictionary.ensureDriverVendor(OracleDictionary.java:245)
Re: EntityManager lifecycle and garbage collection
Posted by Pinaki Poddar <pp...@apache.org>.
Closing EntityManagers when appropriate (that is a non-trivial design
decision) by application is preferred to depending on garbage collectors
non-deterministic behavior.
However, please note that database error code DSRA0010E signify some sort of
authentication problem. The observed error may be arising from issues
unrelated to closing of EntityManagers.
--
View this message in context: http://www.nabble.com/EntityManager-lifecycle-and-garbage-collection-tp14790206p14808462.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.