Comment 1 for bug 855030

Revision history for this message
Chris Behrens (cbehrens) wrote :

Pretty interesting. This has to be from an rpc.call. The caller creates a queue for the response from the worker. It appears the worker is not finding this queue when it goes to 'msg_reply'.

The only reasons I can think of how this could happen:

1) After the caller publishes a request for a worker.... it is getting an exception during waiting for the response. That would cause the queue to disappear. (Seems unlikely)
2) After the caller publishes a request for a worker... it gets disconnected from rabbit, which causes the queue to be deleted momentarily before it reconnects and re-declares it... and the worker tries to respond in the middle of this. (Seems unlikely)
3) rabbit is returning an ACK to the caller (amqplib) before it is actually finished creating the queue... and there's a race condition where the worker tries to reply before the queue is created. (Seems unlikely)
4) kombu+amqplib randomly doesn't send a declare_queue() ? Seems unlikely without an exception thrown. And an exception would abort the publish to the worker.

I wonder what I'm missing. What version of kombu and what version of rabbit? Have you tried falling back to carrot? You can specify: 'rpc_backend=nova.rpc.impl_carrot' to try it.