diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 758ffdf01d..f5f683bfd4 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -1887,9 +1887,6 @@ class FederationHandler(BaseHandler):
origin, event, state=state, auth_events=auth_events, backfilled=backfilled
)
- # 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()
@@ -1903,12 +1900,11 @@ class FederationHandler(BaseHandler):
await self.persist_events_and_notify(
[(event, context)], backfilled=backfilled
)
- success = True
- finally:
- if not success:
- run_in_background(
- self.store.remove_push_actions_from_staging, event.event_id
- )
+ except Exception:
+ run_in_background(
+ self.store.remove_push_actions_from_staging, event.event_id
+ )
+ raise
return context
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index 172a7214b2..e451d6dc86 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -857,9 +857,6 @@ class EventCreationHandler(object):
await self.action_generator.handle_push_actions_for_event(event, context)
- # reraise does not allow inlineCallbacks to preserve the stacktrace, so we
- # hack around with a try/finally instead.
- success = False
try:
# If we're a worker we need to hit out to the master.
if not self._is_event_writer:
@@ -875,22 +872,20 @@ class EventCreationHandler(object):
)
stream_id = result["stream_id"]
event.internal_metadata.stream_ordering = stream_id
- success = True
return stream_id
stream_id = await self.persist_and_notify_client_event(
requester, event, context, ratelimit=ratelimit, extra_users=extra_users
)
- success = True
return stream_id
- finally:
- if not success:
- # Ensure that we actually remove the entries in the push actions
- # staging area, if we calculated them.
- run_in_background(
- self.store.remove_push_actions_from_staging, event.event_id
- )
+ except Exception:
+ # Ensure that we actually remove the entries in the push actions
+ # staging area, if we calculated them.
+ run_in_background(
+ self.store.remove_push_actions_from_staging, event.event_id
+ )
+ raise
async def _validate_canonical_alias(
self, directory_handler, room_alias_str: str, expected_room_id: str
|