diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-10-02 10:47:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-02 10:47:38 +0100 |
commit | 8c41b0ca66b87ebed4abfd8fd52716402d1ac264 (patch) | |
tree | dded82bc1137f1dd5d74a8a20e2262c3f3a01898 /synapse/handlers/federation.py | |
parent | Merge pull request #3986 from matrix-org/erikj/fix_sync_with_redacted_state (diff) | |
parent | Avoid reraise, to improve stacktraces (diff) | |
download | synapse-8c41b0ca66b87ebed4abfd8fd52716402d1ac264.tar.xz |
Merge pull request #3989 from matrix-org/rav/better_stacktraces
Avoid reraise, to improve stacktraces
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index d05b63673f..45d955e6f5 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -18,7 +18,6 @@ import itertools import logging -import sys import six from six import iteritems, itervalues @@ -1602,6 +1601,9 @@ class FederationHandler(BaseHandler): auth_events=auth_events, ) + # reraise does not allow inlineCallbacks to preserve the stacktrace, so we + # hack around with a try/finally instead. + success = False try: if not event.internal_metadata.is_outlier() and not backfilled: yield self.action_generator.handle_push_actions_for_event( @@ -1612,15 +1614,13 @@ class FederationHandler(BaseHandler): [(event, context)], backfilled=backfilled, ) - except: # noqa: E722, as we reraise the exception this is fine. - tp, value, tb = sys.exc_info() - - logcontext.run_in_background( - self.store.remove_push_actions_from_staging, - event.event_id, - ) - - six.reraise(tp, value, tb) + success = True + finally: + if not success: + logcontext.run_in_background( + self.store.remove_push_actions_from_staging, + event.event_id, + ) defer.returnValue(context) |