activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Davies (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (AMQ-1702) DefaultDatabaseLocker causes Oracle to throw an exception "maximum open cursors exceeded" under heavy load
Date Wed, 30 Apr 2008 06:46:44 GMT

     [ 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.


Mime
View raw message