From 89bb68254b937a3dd04752bf101f7239b96c98f2 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Wed, 30 Jan 2019 15:55:37 -0500 Subject: [PATCH] Speed up MagicFolder service shutdown Also work-around a tricky, mysterious failure in the test suite by explicitly flushing the eventual call queue. I don't understand where the call that is landing there comes from or why some other part of the code isn't properly waiting on it. --- src/allmydata/frontends/magic_folder.py | 6 ++++++ src/allmydata/test/test_magic_folder.py | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/allmydata/frontends/magic_folder.py b/src/allmydata/frontends/magic_folder.py index c125a4976..298d38ef0 100644 --- a/src/allmydata/frontends/magic_folder.py +++ b/src/allmydata/frontends/magic_folder.py @@ -712,6 +712,8 @@ class Uploader(QueueMixin): d = self._notifier.wait_until_stopped() else: d = defer.succeed(None) + # Speed up shutdown + self._processing.cancel() # wait for processing loop to actually exit d.addCallback(lambda ign: self._processing) return d @@ -1198,6 +1200,10 @@ class Downloader(QueueMixin, WriteFileMixin): def stop(self): self._log("stop") self._stopped = True + + # Speed up shutdown + self._processing.cancel() + d = defer.succeed(None) # wait for processing loop to actually exit d.addCallback(lambda ign: self._processing) diff --git a/src/allmydata/test/test_magic_folder.py b/src/allmydata/test/test_magic_folder.py index 6872ed28f..c20477f9c 100644 --- a/src/allmydata/test/test_magic_folder.py +++ b/src/allmydata/test/test_magic_folder.py @@ -1448,6 +1448,9 @@ class SingleMagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Reall self.local_dir = os.path.join(self.basedir, u"local_dir") self.mkdir_nonascii(self.local_dir) + from foolscap.eventual import flushEventualQueue + self.addCleanup(flushEventualQueue) + d = self.create_invite_join_magic_folder(self.alice_nickname, self.local_dir) d.addCallback(self._restart_client) # note: _restart_client ultimately sets self.magicfolder to not-None