Patrik Dudits created AMQ-6391:
----------------------------------

             Summary: Memory leak with FailoverTransport when sending TX 
messages from MDB
                 Key: AMQ-6391
                 URL: https://issues.apache.org/jira/browse/AMQ-6391
             Project: ActiveMQ
          Issue Type: Bug
            Reporter: Patrik Dudits


We observe memory leak in 
{{FailoverTransport.stateTracker.connectionStates.transactions}} when using XA 
Transactions in activemq-rar, sending message within same transaction and not 
using {{useInboundSession}}.

In such constellation there are two connections enlisted within same 
transaction. During commit the transaction manager will execute commit on one 
of the resources, per JTA 1.2 section 3.3.1 ("(TransactionManager) ensures that 
the same resource manager only receives one set of prepare-commit calls for 
completing the target global transaction ".) 
[TransactionContext|https://github.com/apache/activemq/blob/a65f5e7c2077e048a2664339f6425d73948d71ce/activemq-client/src/main/java/org/apache/activemq/TransactionContext.java#L478]
 will propagate the afterCommit to all contexts participating in same 
transaction. However, this is not enough for {{ConnectionStateTracker}}, which 
only reacts to [TransactionInfo 
command|https://github.com/apache/activemq/blob/a65f5e7c2077e048a2664339f6425d73948d71ce/activemq-client/src/main/java/org/apache/activemq/TransactionContext.java#L469].
 In effect, when two connection are enlisted in same transaction, just commands 
of one of them is cleared upon commit, leading to memory leak.

Since I presume the {{TransactionInfo}} should be sent only once for commit of 
single transaction, {{ConnectionStateTracker}} needs to clear state for the 
acknowledged transactions regardless of connection id in the transaction 
command.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to