gh-114706: Allow QueueListener.stop() to be called more than once. (GH-114748)

This commit is contained in:
Vinay Sajip 2024-01-30 12:34:18 +00:00 committed by GitHub
parent ea30a28c3e
commit e21754d7f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 3 deletions

View File

@ -1586,6 +1586,7 @@ class QueueListener(object):
Note that if you don't call this before your application exits, there
may be some records still left on the queue, which won't be processed.
"""
self.enqueue_sentinel()
self._thread.join()
self._thread = None
if self._thread: # see gh-114706 - allow calling this more than once
self.enqueue_sentinel()
self._thread.join()
self._thread = None

View File

@ -4089,6 +4089,7 @@ class QueueHandlerTest(BaseTest):
self.que_logger.critical(self.next_message())
finally:
listener.stop()
listener.stop() # gh-114706 - ensure no crash if called again
self.assertTrue(handler.matches(levelno=logging.WARNING, message='1'))
self.assertTrue(handler.matches(levelno=logging.ERROR, message='2'))
self.assertTrue(handler.matches(levelno=logging.CRITICAL, message='3'))