[rabbitmq-discuss] Queue delete causes transaction errors

Aaron Westendorf aaron at agoragames.com
Mon Jul 12 21:32:03 BST 2010


I've confirmed that transactions are being aborted due to a queue
being deleted using an easily-reproducible test case.

The base-case is an exchange and a 1-1 mapping of a routing key to a
destination queue.  The client is simply consuming a published message
and then publishing the next one.  A single client as a consumer is
enough to repeat the bug.

We then have a test client which we can use to attach to an exchange
using a supplied routing key.  It will create its own queue and then
act as a passive listener, for easy monitoring of traffic.  The queue
it uses is set to auto-delete. In high-traffic situations, I would
occasionally see a transaction error in the client.

I setup a test case today where a listener would open a connection and
queue, listen for 2 seconds, then disconnect.  I tried combinations of
auto_delete enabled and disabled, both with and without an explicit
queue delete call, as well as using transactions and re-using a
connection versus closing and reconnecting.  I would run this test
listener while a test client simply published a message to itself
every time it received one.  The client is using transactions,
committing after each publish call.  Within a few minutes, no matter
how my listener was configured, the client would receive a transaction
error.  I repeated this with the 1.8.0 release.

I see that 0.9.1 of the spec adds queue.unbind().  Is that the only
way to avoid this problem, or is there another approach that we can
take?

-Aaron


-- 
Aaron Westendorf
Senior Software Engineer
Agora Games
359 Broadway
Troy, NY 12180
Phone: 518.268.1000
aaron at agoragames.com
www.agoragames.com


More information about the rabbitmq-discuss mailing list