Memory leak when marshaling ActiveMQTextMessage to persistence store
--------------------------------------------------------------------
Key: AMQ-2103
URL: https://issues.apache.org/activemq/browse/AMQ-2103
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.2.0
Reporter: Trevor Pounds
When an org.apache.activemq.command.ActiveMQTextMessage is marshaled into the
persistence store some portion of the messages are stored in memory (i.e.
pending cursor/consumer dispatch queue). The messages stored in memory have
the potential to cause the broker to run out of memory because
org.apache.activemq.command.ActiveMQTextMessage objects can store the data
twice, once in the 'text' field and once in the 'content' field. Normally this
isn't a problem since the 'content' field is cleared when the message is being
used in a client application (i.e. by calling getText() clears content). The
problem occurs when a consumer is slow and a large number of messages are
sitting around on the broker in pending/dispatch memory space. The message is
marshaled for the store and then persisted to disk and copied to pending memory
when space is available.
This bug affects any ActiveMQ*Message object that does not clear its temporary
data (i.e. 'text' field) once it has been marshaled. When a message is
marshaled we should null the derived objects memory space once the data has
been written to the parent object's 'content' field.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.