[rabbitmq-discuss] Erlang has closed
tsuraan at gmail.com
Fri Sep 18 17:39:28 BST 2009
>> It's a single machine, and all the queues are persistent.
> Do you mean 'durable'?
> Transactions only span publishes and acks.
Ok, so it's possible that my program did delete the queue that it
needed and then it died before re-creating it. Those two things are
in adjacent lines, but it's still a possibility, especially on a
really heavily overloaded machine.
> Any abnormal termination of a queue process should result in a sasl log
> entry. Since you are not seeing such log entries it is unlikely that
> abnormal queue termination is a problem.
Is the sasl log in any way related to the simple authentication and
security layer? I had assumed it was logs for secured connections to
rabbit, but now I'm beginning to suspect it's something else...
> As to whether we should remove the queue record when the queue process
> terminates abnormally ... we couldn't just leave the record in place
> since then there would be no way to ever create a queue with the same
> name or get rid of the record. We could restart the queue process, but
> that presents some interesting race conditions as well as masking a
> potentially serious error from clients (even more than is usually the
> case). It's on our todo list to look into this area though.
Yeah, handling process failure would be complicated. It seems like
the information required to recover a queue's contents is available
(at least the persistent contents are on disk). I don't have any idea
how you would handle the transactions a queue is engaged in, unless
AMQP had a transaction rollback error like postgres does for
deadlocks. From my POV, losing the messages in a queue is a pain;
it's not a total catastrophe, but it would be cool if queue contents
could be recovered after a process crash.
More information about the rabbitmq-discuss