[rabbitmq-discuss] Erlang has closed
matthias at lshift.net
Fri Sep 18 16:35:15 BST 2009
>> I am not aware of any problem in that area that got fixed in those
>> releases. Have you got a reference?
> was my queue_disappeared issue.
We did fix some timeout related problems, as indicated in the above
thread. Queues weren't actually disappearing.
> It's a single machine, and all the queues are persistent.
Do you mean 'durable'?
> There is a place where queue_delete is called, but the queue is
> re-created immediately afterwards (I saw something about queue.purge
> the other day, but I haven't looked into it yet). If I do
> queue_delete and then a queue_declare in a transaction, will that
> guarantee that the queue doesn't disappear?
Transactions only span publishes and acks.
> It looks like right now, if a rabbit_amqqueue_process is terminated,
> it removes that queue from mnesia (terminate function of
> rabbit_amqqueue_process calls rabbit_amqqueue:internal_delete).
> Looking at gen_server2, terminate seems to get called in basically any
> case of a process getting an error while handling a call, a supervisor
> dying, the process itself dying, I'm not sure what else. Should all
> those things cause the queue record to be removed from mnesia?
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.
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.
More information about the rabbitmq-discuss