qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Goldstein (JIRA)" <j...@apache.org>
Subject [jira] [Created] (QPID-3357) Broker should purge more aggressively before invoking queue limit policy
Date Thu, 14 Jul 2011 12:34:59 GMT
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


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.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Mime
View raw message