[
https://issues.apache.org/jira/browse/QPID-3357?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Justin Ross updated QPID-3357:
------------------------------
Assignee: Ken Giusti
> Broker should purge more aggressively before invoking queue limit policy
> ------------------------------------------------------------------------
>
> Key: QPID-3357
> URL: https://issues.apache.org/jira/browse/QPID-3357
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Reporter: Andy Goldstein
> Assignee: Ken Giusti
>
> When enqueuing a message, the broker checks the message/byte count in the
> queue and ensures the new message will not violate the queue's limits and
> limit policy (reject, ring, etc). It does not take into account messages
> still in the queue that have expired, which could result in a message being
> dropped or the oldest message being removed unnecessarily. For example,
> create a queue with a max count of 2 messages. Send 1 message with no ttl.
> Send a 2nd message with a small ttl e.g. 1 second. Wait longer then the ttl
> so the 2nd message expires. Try to send a 3rd message to the queue. If the
> queue policy is reject, you will get an exception that the queue is full. If
> the queue policy is ring, it will discard the 1st message (no ttl so
> unexpired) to make room for the new message.
> One possible solution would be to try to purge expired messages more
> aggressively, e.g. when an enqueue would exceed the limit, try to purge any
> expired messages, and then re-check the limit.
--
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]