You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Jaroslav Sedlacek (JIRA)" <ji...@apache.org> on 2015/03/16 04:32:38 UTC

[jira] [Updated] (AMQ-5663) Memory leak in message batching

     [ https://issues.apache.org/jira/browse/AMQ-5663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jaroslav Sedlacek updated AMQ-5663:
-----------------------------------
    Description: 
Memory leak in persistent message batching (Queue.messages.persistent.batchList) caused by inconsistent "cacheEnabled" flag handling.

When AMQ is started and queue has more messages then maxPageSize/maxExpirePageSize/maxBrowsePageSize, then cacheEnabled flag stays "false" and no additional message is stored in batchList.
If queue has less messages than that, cacheEnabled is set to "true" and it is set to false only when AMQ has no more space (see AbstractPendingMessageCursor.hasSpace() - by default 70% of heap). It means batchList can grow significantly in this case.

This behaviour was noticed on DLQ kind of queue with no consumer when a big bunch of messages was added and it caused OOM.


  was:
Memory leak in peristent message batching (Queue.massages.persistent.batchList) caused by inconsistent "cacheEnabled" flag handling.

When AMQ is started and queue has more messages then maxPageSize/maxExpirePageSize/maxBrowsePageSize, then cacheEnabled flag stays "false" and no additional message is stored in batchList.
If queue has less messages than that, cacheEnabled is set to "true" and it is set to true only when AMQ has no more space (see AbstractPendingMessageCursor.hasSpace() - by default 70% of heap). It means batchList can grow significantly in this case.

This behaviour was noticed on DLQ kind of queue with no consumer when a big bunch of messages was added and it caused OOM.



> Memory leak in message batching
> -------------------------------
>
>                 Key: AMQ-5663
>                 URL: https://issues.apache.org/jira/browse/AMQ-5663
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.10.0
>            Reporter: Jaroslav Sedlacek
>
> Memory leak in persistent message batching (Queue.messages.persistent.batchList) caused by inconsistent "cacheEnabled" flag handling.
> When AMQ is started and queue has more messages then maxPageSize/maxExpirePageSize/maxBrowsePageSize, then cacheEnabled flag stays "false" and no additional message is stored in batchList.
> If queue has less messages than that, cacheEnabled is set to "true" and it is set to false only when AMQ has no more space (see AbstractPendingMessageCursor.hasSpace() - by default 70% of heap). It means batchList can grow significantly in this case.
> This behaviour was noticed on DLQ kind of queue with no consumer when a big bunch of messages was added and it caused OOM.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)