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.3.0, 5.2.0, 5.1.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
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.