[
https://issues.apache.org/activemq/browse/AMQ-1702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rob Davies resolved AMQ-1702.
-----------------------------
Fix Version/s: 5.2.0
(was: 5.1.0)
Resolution: Fixed
Fixed by SVN revision 652302
> DefaultDatabaseLocker causes Oracle to throw an exception "maximum open
> cursors exceeded" under heavy load
> ----------------------------------------------------------------------------------------------------------
>
> Key: AMQ-1702
> URL: https://issues.apache.org/activemq/browse/AMQ-1702
> Project: ActiveMQ
> Issue Type: Bug
> Components: Message Store
> Affects Versions: 5.0.0
> Reporter: Rob Davies
> Assignee: Rob Davies
> Fix For: 5.2.0
>
>
> The API document for the java.sql.Statement class
> (http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Statement.html#close())
> says that statement objects are automatically closed during garbage
> collection, however, under heavy load (i.e. for an application that is
> processing multiple messages per second) you will quickly run out of cursors
> even before garbage collection gets to reclaiming prepared statements. Also
> any application that deals with huge volume is going to use a connection pool
> that also pools the statements, which means that the statement you created
> are referenced by the pool, thus they won't be garbage collected and closed.
> Just like the connection.close triggers the connection to be marked as
> available in the pool, statement.close will trigger the statement to be
> available in the pool for whoever needs a statement for this connection.
> As a result of running out of statements, DefaultDatabaseLocker causes Oracle
> to throw an exception "maximum open cursors exceeded". And the broker looses
> the DB lock and shuts down.
> One solution would be to add a finally block onto the
> DefaultDatabaseLocker.keepAlive() method to close statement explicitly.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.