[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Commented: (AMQ-2556) Memory leaks with XA Transactions
From:       "Torsten Krah (JIRA)" <jira () apache ! org>
Date:       2010-03-31 12:43:08
Message-ID: 1738184714.7861270039388451.JavaMail.jira () brutus ! apache ! org
[Download RAW message or body]


    [ https://issues.apache.org/activemq/browse/AMQ-2556?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=58585#action_58585 \
] 

Torsten Krah commented on AMQ-2556:
-----------------------------------

5.3.1 is still affected.
Using Spring 3.0.1, Atomikos 3.6.0 and Springs Message Listener i can see this too. 
The ActiveMQXASession and ActiveMQTopicSubscriber Instances are growing also until \
OOM.

Looking the ActiveMQMessageConsumer in calls to close this is done:

new Synchronization() {
                    public void afterCommit() throws Exception {
                        doClose();
                    }

                    public void afterRollback() throws Exception {
                        doClose();
                    }
                });

But what about not being commited or rollbacked at all in case of XA_RDONLY - doClose \
will never be called - don't know if this does matter for this memory leak but it \
seems inconsistent that resource cleanup is only done fpr commit + rollback.


> Memory leaks with XA Transactions (case of read-only transactions)
> ------------------------------------------------------------------
> 
> Key: AMQ-2556
> URL: https://issues.apache.org/activemq/browse/AMQ-2556
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker, JMS client
> Affects Versions: 5.1.0, 5.2.0, 5.3.0
> Environment: ActiveMQ 5.3.0
> Atomikos Transactions Essentials 3.5.8
> Spring 2.5.6
> Oracle 11g (thin driver version 11.1.0.7.0)
> Reporter: Daniel Santos
> Attachments: XAConsumer.zip
> 
> 
> Some transaction related information are not released in case of read-only \
> transactions (where not messages have been consumed or produced) by broker and \
> client, that causes an OutOfMemory after running some time. Fields that hold these \
>                 "transaction related information" are (at least) :
> - {{org.apache.activemq.state.ConnectionState.transactions}}
> - {{org.apache.activemq.TransactionContext.ENDED_XA_TRANSACTION_CONTEXTS}}
> After serach, it seems that the case of read-only XA transactions (that terminates \
>                 at prepare time) has been missed in some code like :
> - {{org.apache.activemq.broker.TransportConnection}} that puts TransactionState in \
> {{org.apache.activemq.state.ConnectionState.transactions}} at the beginning, \
> release them at commit (or rollback) time *but not at prepare time where result is \
>                 {{XAResource.XA_RDONLY}}*
> - {{org.apache.activemq.TransactionContext}} that do the same mistake via \
> ENDED_XA_TRANSACTION_CONTEXTS in prepare() _Note that the case of read-only \
> transactions seems correctly done by \
> {{org.apache.activemq.transaction.XATransaction}} (very interesting comment here \
> http://fisheye6.atlassian.com/browse/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transaction/XATransaction.java?r=809940#l175)_
> 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic