From: Michael S. (JIRA) <no...@at...> - 2005-12-22 18:28:34
|
Unclosed ResultSet when using Identity -------------------------------------- Key: HHH-1312 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312 Project: Hibernate3 Type: Bug Components: core Versions: 3.1 rc2, 3.1 rc3, 3.1 Environment: JBoss 4.0.3SP1 Hibernate 3.1rc2 Java 1.5.0_06 MSSQLServer 2000 Reporter: Michael Samblanet Priority: Minor The code around AbstractEntityPersister.java line 1969 obtains a result set using GetGeneratedKeysHelper.getGeneratedKey but the result set is never closed by this function nor the functions it calls. The issue was exposed by the message below in JBoss 4.0.3 SP1. This is an EJB3 application on JBoss using MSSQLServer 2000 and we are persisting an object with a primary key using an identity data type. A review of the Hibernate 3.1 source code seems to indicate it has the same issue. 11:29:30,817 WARN [WrappedConnection] Closing a result set you left open! Please close it yourself. java.lang.Throwable: STACKTRACE at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:572) at org.jboss.resource.adapter.jdbc.WrappedStatement.getGeneratedKeys(WrappedStatement.java:501) 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.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:59) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1969) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2404) at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87) at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:590) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:568) at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:130) at org.jboss.ejb3.entity.InjectedEntityManager.persist(InjectedEntityManager.java:97) <snip> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: Gavin K. (JIRA) <no...@at...> - 2005-12-22 19:31:32
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312?page=comments#action_21427 ] Gavin King commented on HHH-1312: --------------------------------- Well, I don't want to get in an argument with Adrian, but in fact JDBC does not usually ask you to close ResultSets. I would be inclined to blame this on the JBoss JCA layer. http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html#close() Well, anyway, we could be more "hygenic" here. > Unclosed ResultSet when using Identity > -------------------------------------- > > Key: HHH-1312 > URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312 > Project: Hibernate3 > Type: Bug > Components: core > Versions: 3.1 rc2, 3.1 rc3, 3.1 > Environment: JBoss 4.0.3SP1 > Hibernate 3.1rc2 > Java 1.5.0_06 > MSSQLServer 2000 > Reporter: Michael Samblanet > Priority: Minor > > > The code around AbstractEntityPersister.java line 1969 obtains a result set using GetGeneratedKeysHelper.getGeneratedKey > but the result set is never closed by this function nor the functions it calls. The issue was exposed by the > message below in JBoss 4.0.3 SP1. > This is an EJB3 application on JBoss using MSSQLServer 2000 and we are persisting an object with a primary key using an > identity data type. > A review of the Hibernate 3.1 source code seems to indicate it has the same issue. > 11:29:30,817 WARN [WrappedConnection] Closing a result set you left open! Please close it yourself. > java.lang.Throwable: STACKTRACE > at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:572) > at org.jboss.resource.adapter.jdbc.WrappedStatement.getGeneratedKeys(WrappedStatement.java:501) > 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.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:59) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1969) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2404) > at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37) > at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243) > at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269) > at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167) > at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) > at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38) > at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:590) > at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:568) > at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:130) > at org.jboss.ejb3.entity.InjectedEntityManager.persist(InjectedEntityManager.java:97) > <snip> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: Eric M. (JIRA) <no...@at...> - 2006-06-13 19:12:35
|
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312?page=comments#action_23330 ] Eric Molitor commented on HHH-1312: ----------------------------------- There is the possibility of leaking resources with a poorly implemented JDBC driver when resultsets are not properly closed. (So the hygenic cleanup would be greatly appreciated.) To disable this behavior in JBoss open up the *-DS.xml file that you are using for Hibernate and set <track-statements>true</track-statements> to false. (Or just comment it out.) > Unclosed ResultSet when using Identity > -------------------------------------- > > Key: HHH-1312 > URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1312 > Project: Hibernate3 > Type: Bug > Components: core > Versions: 3.1 rc3, 3.1, 3.1 rc2 > Environment: JBoss 4.0.3SP1 > Hibernate 3.1rc2 > Java 1.5.0_06 > MSSQLServer 2000 > Reporter: Michael Samblanet > Priority: Minor > > > The code around AbstractEntityPersister.java line 1969 obtains a result set using GetGeneratedKeysHelper.getGeneratedKey > but the result set is never closed by this function nor the functions it calls. The issue was exposed by the > message below in JBoss 4.0.3 SP1. > This is an EJB3 application on JBoss using MSSQLServer 2000 and we are persisting an object with a primary key using an > identity data type. > A review of the Hibernate 3.1 source code seems to indicate it has the same issue. > 11:29:30,817 WARN [WrappedConnection] Closing a result set you left open! Please close it yourself. > java.lang.Throwable: STACKTRACE > at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:572) > at org.jboss.resource.adapter.jdbc.WrappedStatement.getGeneratedKeys(WrappedStatement.java:501) > 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.hibernate.util.GetGeneratedKeysHelper.getGeneratedKey(GetGeneratedKeysHelper.java:59) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:1969) > at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2404) > at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:37) > at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:243) > at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:269) > at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167) > at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) > at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87) > at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38) > at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:590) > at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:568) > at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:130) > at org.jboss.ejb3.entity.InjectedEntityManager.persist(InjectedEntityManager.java:97) > <snip> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |