[ https://issues.apache.org/jira/browse/AMQ-6391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16927959#comment-16927959 ]
Jonathan S Fisher edited comment on AMQ-6391 at 9/11/19 9:34 PM: ----------------------------------------------------------------- I just ran into this bug, bummer. Would this method be sufficient? or were there problems with this approach? {code:java} stateTracker.setTrackTransactions(false); {code} For an MDB where we'll retry the message on disconnect, so I'm not to worried about restoring state was (Author: exabrial): I just ran into this bug, bummer. Would this method be sufficient? or were there problems with this approach? {code:java} stateTracker.setTrackTransactions(true); {code} > 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 > Priority: Major > Attachments: 0001-AMQ-6391-test.patch > > > 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 (v8.3.2#803003)