From c3e50a4536784abd6ea50b2e34929677ad0e80c5 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone Date: Mon, 25 Feb 2019 16:08:59 -0500 Subject: [PATCH] convert _notify --- src/allmydata/frontends/magic_folder.py | 18 +++++++++++------- src/allmydata/test/test_magic_folder.py | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/allmydata/frontends/magic_folder.py b/src/allmydata/frontends/magic_folder.py index f08cd9ad6..b396c8e69 100644 --- a/src/allmydata/frontends/magic_folder.py +++ b/src/allmydata/frontends/magic_folder.py @@ -685,6 +685,12 @@ SCAN = ActionType( u"A brute-force scan of a subset of the local directory is being performed.", ) +NOTIFIED = ActionType( + u"magic-folder:notified", + [PATH, _NICKNAME, _DIRECTION], + [], + u"Magic-Folder received a notification of a local filesystem change for a certain path.", +) class QueueMixin(HookMixin): """ @@ -1080,13 +1086,11 @@ class Uploader(QueueMixin): return relpath_u in self._pending def _notify(self, opaque, path, events_mask): - # Twisted doesn't seem to do anything if our callback throws - # an error, so... - try: - return self._real_notify(opaque, path, events_mask) - except Exception as e: - self._log(u"error calling _real_notify: {}".format(e)) - twlog.err(Failure(), "Error calling _real_notify") + with NOTIFIED(path=path, **self._log_fields): + try: + return self._real_notify(opaque, path, events_mask) + except Exception: + write_traceback() def _real_notify(self, opaque, path, events_mask): self._log("inotify event %r, %r, %r\n" % (opaque, path, ', '.join(self._inotify.humanReadableMask(events_mask)))) diff --git a/src/allmydata/test/test_magic_folder.py b/src/allmydata/test/test_magic_folder.py index 2251d2e8f..5ce21fafa 100644 --- a/src/allmydata/test/test_magic_folder.py +++ b/src/allmydata/test/test_magic_folder.py @@ -1789,7 +1789,8 @@ class SingleMagicFolderTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Reall # pending callbacks including the exception are processed # before we flush the errors. yield task.deferLater(reactor, 0, lambda: None) - errors = self.flushLoggedErrors(BadStuff) + + errors = self.eliot_logger.flushTracebacks(BadStuff) # it seems on Windows the "RealTest" variant only produces 1 # notification for some reason.. self.assertTrue(len(errors) >= 1)