[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