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.

Reply via email to