Exclusive queues cause reconnection errors
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
oslo-incubator |
Fix Released
|
Medium
|
Vish Ishaya | ||
Grizzly |
Fix Released
|
Medium
|
Vish Ishaya |
Bug Description
From http://
I am seeing an issue with the FanoutConsumer: currently each nova service declares a FanoutConsumer (in addition to TopicConsumer and DirectConsumer). The FanoutConsumer declares a queue on the rabbitmq server, whose name is “<topic>
This queue is marked as “exclusive” and “auto-delete”. “Exclusive” means that the queue can be used by a single Connection. However, when the FanoutConsumer detects disconnection and attempts to reconnect, it creates a new BrokerConnection, but uses the same queue name. In most cases, since the queue is marked as “auto-delete”, the rabbitmq server deletes the queue automatically on disconnection (after some timeout). So when FanoutConsumer tries to reconnect, the previous queue is gone. In some cases, however, the queue has not been deleted on the server yet, so when FanoutConsumer reconnects, there is an exception on the server:
=ERROR REPORT==== 26-Dec-
connection <0.747.0>, channel 1 - error:
{amqp_error,
"cannot obtain exclusive access to locked queue 'volume_
'queue.declare'}
As a result, the call to queue.declare() that leads to exception on the server is stuck and never returns. So the service is not able to receive any messages.
Changed in oslo: | |
status: | New → In Progress |
assignee: | nobody → Vish Ishaya (vishvananda) |
tags: | added: folsom-backport-potential |
description: | updated |
Changed in oslo: | |
importance: | Undecided → Medium |
Changed in oslo: | |
milestone: | none → grizzly-2 |
status: | Fix Committed → Fix Released |
Fix proposed to branch: master /review. openstack. org/18735
Review: https:/