summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Olof Gunnar Andersson <eandersson@blizzard.com>2020-05-06 10:54:11 -0700
committerErik Olof Gunnar Andersson <eandersson@blizzard.com>2020-05-06 16:15:37 -0700
commit0d52d83697bfd786481be630726530cc27e1b830 (patch)
tree602dbe4b22c2da35331230c84fceb1b6fc7096cf
parent5a97672d65397ebc80f9e9c2200a4a82a49ead30 (diff)
downloaddesignate-0d52d83697bfd786481be630726530cc27e1b830.tar.gz
Fix designate-sink shutdown issue10.0.0.0rc210.0.0
If no notification handler is configured the designate-sink may not shutdown properly. This is because the listener was created but never started. This caused oslo.messaging to hang on waiting for a successful start before stopping. Closes-Bug: #1877201 Change-Id: Ie51f7c3d64cbb48ae359256b6fa5a0196fb3f248 (cherry picked from commit 40cbc9bd43d3b43d6cdc4daeb5a089df96603ed7)
-rw-r--r--designate/sink/service.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/designate/sink/service.py b/designate/sink/service.py
index ea7ddfbc..9b918326 100644
--- a/designate/sink/service.py
+++ b/designate/sink/service.py
@@ -33,6 +33,7 @@ class Service(service.Service):
)
# Initialize extensions
+ self._server = None
self.handlers = self._init_extensions()
self.subscribers = self._get_subscribers()
@@ -71,20 +72,23 @@ class Service(service.Service):
# TODO(ekarlso): Change this is to endpoint objects rather then
# ourselves?
- self._server = rpc.get_notification_listener(
- targets, [self],
- pool=cfg.CONF['service:sink'].listener_pool_name)
-
if targets:
+ self._server = rpc.get_notification_listener(
+ targets, [self],
+ pool=cfg.CONF['service:sink'].listener_pool_name
+ )
self._server.start()
def stop(self, graceful=True):
# Try to shut the connection down, but if we get any sort of
# errors, go ahead and ignore them.. as we're shutting down anyway
try:
- self._server.stop()
- except Exception:
- pass
+ if self._server:
+ self._server.stop()
+ except Exception as e:
+ LOG.warning(
+ 'Unable to gracefully stop the notification listener: %s', e
+ )
super(Service, self).stop(graceful)