From a6f0aaed3ff2e2ce40665d4e90e92da9d3b3c753 Mon Sep 17 00:00:00 2001 From: Kirill Bespalov <kbespalov@mirantis.com> Date: Mon, 25 Jul 2016 15:11:53 +0300 Subject: [PATCH] Delete fanout queues on gracefully shutdown No reasons to kept fanout queues in case then a rpc server is gracefully shutdown. The expiration time of the fanout queue is too long (30 mins), so for large scales it can accumulate a lot of messages before it be removed Closes-Bug: 1606213 Change-Id: Ieaa35c454df542042f3a5424d70f87d486693024 --- oslo_messaging/_drivers/impl_rabbit.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/oslo_messaging/_drivers/impl_rabbit.py b/oslo_messaging/_drivers/impl_rabbit.py index f788bba51..a0f9ddf24 100644 --- a/oslo_messaging/_drivers/impl_rabbit.py +++ b/oslo_messaging/_drivers/impl_rabbit.py @@ -844,6 +844,11 @@ class Connection(object): """Close/release this connection.""" self._heartbeat_stop() if self.connection: + for consumer, tag in self._consumers.items(): + if consumer.type == 'fanout': + LOG.debug('[connection close] Deleting fanout ' + 'queue: %s ' % consumer.queue.name) + consumer.queue.delete() self._set_current_channel(None) self.connection.release() self.connection = None @@ -852,7 +857,6 @@ class Connection(object): """Reset a connection so it can be used again.""" recoverable_errors = (self.connection.recoverable_channel_errors + self.connection.recoverable_connection_errors) - with self._connection_lock: try: for consumer, tag in self._consumers.items():