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)