diff options
author | Erik Olof Gunnar Andersson <eandersson@blizzard.com> | 2020-05-06 10:54:11 -0700 |
---|---|---|
committer | Erik Olof Gunnar Andersson <eandersson@blizzard.com> | 2020-05-06 16:15:37 -0700 |
commit | 0d52d83697bfd786481be630726530cc27e1b830 (patch) | |
tree | 602dbe4b22c2da35331230c84fceb1b6fc7096cf | |
parent | 5a97672d65397ebc80f9e9c2200a4a82a49ead30 (diff) | |
download | designate-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.py | 18 |
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) |