[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-2033) "ORA-01000: maximum open cursors exceeded" with incomplete iterations
Max Rydahl Andersen (JIRA)
noreply at atlassian.com
Mon Aug 28 05:21:25 EDT 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2033?page=all ]
Max Rydahl Andersen closed HHH-2033:
------------------------------------
Resolution: Rejected
Hibernate.close(iterator)
> "ORA-01000: maximum open cursors exceeded" with incomplete iterations
> ---------------------------------------------------------------------
>
> Key: HHH-2033
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2033
> Project: Hibernate3
> Type: Bug
> Components: query-sql
> Versions: 3.1.2
> Environment: Hibernate: 3.1.2
> Client: Suse Linux
> Database: Oracle 9i
> Reporter: Frederic Leitenberger
> Priority: Critical
> Attachments: HibernateAbortIterateTest.java
>
>
> When using iterate and NOT iterating through all items, the cursor stays open.
> When repeating this several times the "maximum open cursors exceeded" - exception occurs.
> This problem occured in the following situation:
> We have an import tool, which reads one line from an import-file and queries the database for colliding/overlapping objects.
> The objects are loaded whit iterate. The first object which doesn't fit the new input throws an exception and so leaves the iterate-loop.
> There is no function to close the iterator explicitly.
> This would solve the problem (once the developer is aware of it).
> My current workaround ist to use query.list().iterator() instead of query.iterate().
> But this is only applicable with small resultsets.
> I'll do an update of Hibernate soon and see if it still occurs.
> The attached test crashes after 300 iterations.
> 300 is the open cursor limit for my DB.
> org.hibernate.exception.GenericJDBCException: could not execute query using iterate
> at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
> at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
> at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
> at org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:420)
> at org.hibernate.hql.ast.QueryTranslatorImpl.iterate(QueryTranslatorImpl.java:318)
> at org.hibernate.engine.query.HQLQueryPlan.performIterate(HQLQueryPlan.java:177)
> at org.hibernate.impl.SessionImpl.iterate(SessionImpl.java:1177)
> at org.hibernate.impl.QueryImpl.iterate(QueryImpl.java:46)
> at de.iccs.test.HibernateAbortIterateTest.testAbortIterate(HibernateAbortIterateTest.java:55)
> 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 junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.sql.SQLException: ORA-01000: maximum open cursors exceeded
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
> at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
> at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:181)
> at oracle.jdbc.driver.T4CPreparedStatement.execute_for_describe(T4CPreparedStatement.java:420)
> at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:896)
> at oracle.jdbc.driver.T4CPreparedStatement.execute_maybe_describe(T4CPreparedStatement.java:452)
> at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:986)
> at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2888)
> at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:2929)
> at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
> at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
> at org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:397)
> ... 20 more
--
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
More information about the hibernate-issues
mailing list