From 5761652e02e17bd41128880f84d1a6c999b6b4d8 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Sun, 20 Jan 2019 08:30:55 +0000 Subject: [PATCH] core: allow Router.shutdown() to succeed after exit. For join_thread(): Exception in thread mitogen.master.join_thread_async: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 754, in run self.__target(*self.__args, **self.__kwargs) File "/home/dmw/src/mitogen/mitogen/master.py", line 249, in _watch watcher.on_join() File "/home/dmw/src/mitogen/mitogen/master.py", line 816, in shutdown super(Broker, self).shutdown() File "/home/dmw/src/mitogen/mitogen/core.py", line 2741, in shutdown self.defer(_shutdown) File "/home/dmw/src/mitogen/mitogen/core.py", line 2142, in defer raise Error(self.broker_shutdown_msg) Error: An attempt was made to enqueue a message with a Broker that has already exitted. It is likely your program called Broker.shutdown() too early. --- mitogen/core.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mitogen/core.py b/mitogen/core.py index d6a2fbb4..10336771 100644 --- a/mitogen/core.py +++ b/mitogen/core.py @@ -2738,7 +2738,8 @@ class Broker(object): _v and LOG.debug('%r.shutdown()', self) def _shutdown(): self._alive = False - self.defer(_shutdown) + if self._alive and not self._exitted: + self.defer(_shutdown) def join(self): """