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

Christian Posta commented on AMQ-4311:
--------------------------------------

What store are you assuming for this? Kahadb? Jdbc? Memory?
Can you put together a test that shows PFC won't block? message size for 
pending messages in a tx should be counted against memory usage... any time we 
do a message.incrementReferenceCount(), the usage memory will be updated (if 
it's the first reference).

In org.apache.activemq.broker.region.Queue#doMessageSend we check if 
transaction (context.isInTransaction) and then we do 
message.incrementReferenceCount()...

In org.apache.activemq.broker.region.Topic#doMessageSend we increment the 
reference regardless of whether it's in a tx. 

You might be on to something, but can you give more details?
                
> Spooling pending messages in the large transaction to the disk
> --------------------------------------------------------------
>
>                 Key: AMQ-4311
>                 URL: https://issues.apache.org/jira/browse/AMQ-4311
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Broker, Message Store
>    Affects Versions: 5.x
>            Reporter: SuoNayi
>             Fix For: 5.9.0
>
>
> Currently MemoryTransactionStore is used to hold pending messages in a 
> transaction.
> More pending messages in a transaction more memory is consumed.
> Because the message size of pending messages is not counted in usage limit 
> before they are committed so PFC wont block producers as well and large 
> transaction will cause broker throws OOM at last.
> Spooling pending messages in the transaction to the disk is one of solution.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to