[ 
https://issues.apache.org/jira/browse/QPID-7958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16194375#comment-16194375
 ] 

Keith Wall edited comment on QPID-7958 at 10/6/17 12:21 PM:
------------------------------------------------------------

The first part of the defect relates only to the system nodes.  The defect 
appears on the 0-10 path because, unlike the 0-8 path, a reference to the 
message geneated by the system node is never taken.  On the 0-8 path,
the reference happens to be taken by the NoAckConsumer 
(ConsumerTarget_0_8.java:138).  When this reference is decremented, the message 
is deleted.

The defect here is that 
{{org.apache.qpid.server.virtualhost.AbstractSystemMessageSource.Consumer#pullMessage}}
should be providing a message reference in the same way as 
{{org.apache.qpid.server.management.amqp.ManagementNodeConsumer#pullMessage}} 
etc.

There is a second aspect to the defect that is common between system nodes and 
the management node.  If the client fails to consume the message, the message 
will be leaked.  On closing the consumer we should be releasing any messages 
remaining on the internal queue.

Finally, we should be disposing of the converted messages.

(an earlier version of this comment had an attachment, which was wrong).


was (Author: k-wall):
The first part of the defect relates only to the system nodes.  The defect 
appears on the 0-10 path because, unlike the 0-8 path, a reference to the 
message geneated by the system node is never taken.  On the 0-8 path,
the reference happens to be taken by the NoAckConsumer 
(ConsumerTarget_0_8.java:138).  When this reference is decremented, the message 
is deleted.

The defect here is that 
{{org.apache.qpid.server.virtualhost.AbstractSystemMessageSource.Consumer#pullMessage}}
should be providing a message reference in the same way as 
{{org.apache.qpid.server.management.amqp.ManagementNodeConsumer#pullMessage}} 
etc.

There is a second aspect to the defect that is common between system nodes and 
the management node.  If the client fails to consume the message, the message 
will be leaked.  On closing the consumer we should be releasing any messages 
remaining on the internal queue.

Finally, we should be disposing of the converted messages.

> [Java Broker] [AMQP0-10] References to messages sent by 
> $virtualhostProperties node retained by store
> -----------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7958
>                 URL: https://issues.apache.org/jira/browse/QPID-7958
>             Project: Qpid
>          Issue Type: Bug
>    Affects Versions: qpid-java-broker-7.0.0
>            Reporter: Keith Wall
>            Priority: Critical
>
> On  the 0-10 path, I notice that references to messages created by the 
> {{${virtualhostProperties\}}} node are being retained internally within the 
> store.  This is leaking approximately ~1024 bytes per connection.  Restarting 
> the Broker or recycling the virtualhost frees the memory.
> The reference are being retained by the {{AbstractXXXMessageStore#_messages}} 
> set.
> QPID-7783 added the _messages data structure.  -It was back ported to 6.0 and 
> 6.1, so the leak might be present there too.  I have not verified this-. 
> (updated 2017/10/06 does not affect 6.1 or 6.0.  The 
> MessageInstanceConsumerPair, which is no longer on master, unconditionally 
> took a reference, so a reference was already taken).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to