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

Francesco Nigro edited comment on ARTEMIS-3021 at 1/20/21, 2:59 PM:
--------------------------------------------------------------------

After an additional investigation, it seems that the wrong core estimation only 
happen if the message is being modified by adding routing information to it 
(with RemoteQueueBinding::addRouteContextToMessage) ie is clustered.
The process that cause the wrong estimation is:
# add route information to the message
# get memory estimation for paging without accounting the new route information
# getting persistent size for durable append on journal
# re-encoding due to modified routing info with high chance to get a much 
larger buffer


was (Author: nigrofranz):
After an additional investigation, it seems that the wrong core estimation only 
happen if the message is being modified by adding routing information to it 
(with RemoteQueueBinding::addRouteContextToMessage) ie is clustered.
The process that cause the wrong estimation is:
# add route information to the message
# get memory estimation for paging
# getting persistent size for durable append on journal
# re-encoding due to modified routing info with high chance to get a much 
larger buffer

> OOM due to wrong CORE clustered message memory estimation
> ---------------------------------------------------------
>
>                 Key: ARTEMIS-3021
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3021
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>            Reporter: Francesco Nigro
>            Assignee: Francesco Nigro
>            Priority: Major
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> Durable CORE messages with clustering can get their internal buffer enlarged 
> by encodeHeadersAndProperties while being persisted on the journal, but the 
> address size memory estimation using the estimated memory of a message is 
> performed before that, making it less precise. 
> This bad timing estimation, together with Netty ByteBuf auto-sizing mechanism 
> can cause the broker to underestimate the message footprint, causing it to go 
> OOM. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to