On 09/04/2013 06:19 AM, Pavel Moravec wrote:
Hi all, I identified a use case when moving (via QMF) more messages than the destination queue can handle causes one message loss. See reproducer when attempting to move 300 messages to a queue with max count 100:$ qpid-receive -a "ringQueue; {create:always, node:{ x-declare:{ arguments:{'qpid.max_count':100}}}}" $ qpid-send -a "fromQueue; {create:always}" -m 1000 $ qpid-tool Management Tool for QPID qpid: list broker Object Summary: ID Created Destroyed Index ======================================= 117 08:11:52 - amqp-broker qpid: call 117 queueMoveMessages fromQueue ringQueue 300 {} qpid: resource-limit-exceeded: Policy exceeded on ringQueue, policy: size: max=104857600, current=1000; count: max=100, current=100; type=reject (qpid/broker/QueuePolicy.cpp:92) (7) - {} qpid: quit Exiting... $ qpid-stat -q Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ========================================================================================================================= 3d03d063-4f1e-4cc2-822f-00d95d7e42e9:0.0 Y Y 0 0 0 0 0 0 1 2 fromQueue 899 1.00k 101 8.99k 10.0k 1.01k 0 1 ringQueue 100 100 0 1.00k 1.00k 0 0 1 $ My question is: is it a bug or intended behaviour? On one side, the broker should not lose any message. On the other side, it is an operator mistake trying to route more messages than the destination queue can handle.. (and moreover, knowing the method responsible for moving the messages, it would not be trivial to fix this without performance impact, I guess). Any comments?
IMO this is a bug. It looks like MoveMessage is removing the message from the source queue before verifying that it can be successfully added to the destination queue rather than the other way around.
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
