activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martyn Taylor (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ACTIVEMQ6-64) Messages are paged twice when batch of messages pushed address over page threshold
Date Mon, 05 Jan 2015 13:00:36 GMT

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

Martyn Taylor updated ACTIVEMQ6-64:
-----------------------------------
    Description: 
When sending a batch of messages using the core protocol.  i.e. performing producer.send(message);
multiple times then calling session.commit().  The messages are paged twice.  This happens
when the number of messages in the batch pushes the address over it's max allocated memory
and initialises paging on the address.

If the messages are committed after the paging has started this bug does not surface, nor
does it occur if the total messages in the batch do not push the address in paging mode.

For example.

I have an address "testAddress" backed up by a queue "testQueue".  The max memory on the address
is set to 10MB.

If there are no messages in the queue, hence the total memory usage of the address is <10MB
and I send 20 x messages of 1MB, the call session.commit().  The messages that exceed the
memory limit are paged twice.  Messages 1 - 10 stay in memory, messages 11 - 20 are paged
twice.

This does not happen when the address is already in paging mode.  If the address is in paging
mode before we send the 20 messages, the server behaves as expected and pages all 20 messages
once.

I have created a test to show this behaviour here: https://github.com/mtaylor/activemq-6/commit/b7bee77bcefb12c4b104c0beb3f4dc9aab545f6b


  was:
When sending a batch of messages using the core protocol.  i.e. performing producer.send(message);
multiple times then calling session.commit().  The messages are paged twice.  This happens
when the number of messages in the batch pushes the address over it's max allocated memory
and initialises paging on the address.

If the messages are committed after the paging has started this bug does not surface, nor
does it occur if the total messages in the batch do not push the address in paging mode.

For example.

I have an address "testAddress" backed up by a queue "testQueue".  The max memory on the address
is set to 10MB.

If there are no messages in the queue, hence the total memory usage of the address is <10MB
and I send 20 x messages of 1MB, the call session.commit().  The messages that exceed the
memory limit are paged twice.  Messages 1 - 10 stay in memory, messages 11 - 20 are paged
twice.

This does not happen when the address is already in paging mode.  If the address is in paging
mode before we send the 20 messages, the server behaves as expected and pages all 20 messages
once.

I have created a test to show this behaviour here: 



> Messages are paged twice when batch of messages pushed address over page threshold
> ----------------------------------------------------------------------------------
>
>                 Key: ACTIVEMQ6-64
>                 URL: https://issues.apache.org/jira/browse/ACTIVEMQ6-64
>             Project: Apache ActiveMQ 6
>          Issue Type: Bug
>            Reporter: Martyn Taylor
>
> When sending a batch of messages using the core protocol.  i.e. performing producer.send(message);
multiple times then calling session.commit().  The messages are paged twice.  This happens
when the number of messages in the batch pushes the address over it's max allocated memory
and initialises paging on the address.
> If the messages are committed after the paging has started this bug does not surface,
nor does it occur if the total messages in the batch do not push the address in paging mode.
> For example.
> I have an address "testAddress" backed up by a queue "testQueue".  The max memory on
the address is set to 10MB.
> If there are no messages in the queue, hence the total memory usage of the address is
<10MB and I send 20 x messages of 1MB, the call session.commit().  The messages that exceed
the memory limit are paged twice.  Messages 1 - 10 stay in memory, messages 11 - 20 are paged
twice.
> This does not happen when the address is already in paging mode.  If the address is in
paging mode before we send the 20 messages, the server behaves as expected and pages all 20
messages once.
> I have created a test to show this behaviour here: https://github.com/mtaylor/activemq-6/commit/b7bee77bcefb12c4b104c0beb3f4dc9aab545f6b



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

Mime
View raw message