[
https://issues.apache.org/jira/browse/QPID-6935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15060756#comment-15060756
]
Rob Godfrey commented on QPID-6935:
-----------------------------------
So, from the screenshot it seems that each transfer object has a HeapByteBuffer
which is backed by a different Java byte[]. Given this I don't think this is
infinite recursion in the SessionEndpoint.sendTransfer - in send transfer the
transfers will be backed by HeapByteBuffers which are backed by the same Java
byte[] (as they are created by calling ByteBuffer.duplicate() ).
So I think the client believes it is actually being sent many different
transfer frames from the broker, all related to the same deliveryId. We would
have to look at protocol level debugging to see if the issue is the broker
sending lots of frames with the same delivery id, or the client somehow
processing the same frame over and over again.
Is the data inside each delivery the same, or do they have distinct content?
> Infinite recursion resulting in huge number of Transfer objects created in
> Delivery, until OutOfMemory
> ------------------------------------------------------------------------------------------------------
>
> Key: QPID-6935
> URL: https://issues.apache.org/jira/browse/QPID-6935
> Project: Qpid
> Issue Type: Bug
> Components: JMS AMQP 1.0 Client
> Affects Versions: 0.32
> Environment: Linux RedHat 7
> Reporter: Leo Riguspi
> Priority: Blocker
> Attachments: Heap.png, Heap2.png, memory_dump.txt, snapshot1.png,
> snapshot2.png
>
>
> We have an Apache ActiveMQ 5.12 running for 2 months now and a Java AMQP
> client publishing a few messages every few minutes. Messages are small, less
> than 1K and are immediately consumed.
> For the second time in two months the client exploded with an OutOfMemory
> error. By analysing the memory the culprit seems to be the ArrayList of
> Trasfer objects in the Delivery. All of a sudden, for some reason it just
> keeps creating new Trasfers until the memory is full.
> We have a screenshot of the memory dump in which there are more than 49000
> Trasfer objects in the same Delivery. Unfortunately there seems to be no way
> to attach it to this issue.
> We did not find a way to reproduce the problem but it looks like some
> combination of conditions cause the SessionEndpoint::sendTransfer recursive
> method to call itself over and over, each time adding a new Transfer object.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]