summary refs log tree commit diff
path: root/synapse/handlers/message.py
diff options
context:
space:
mode:
authorRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2018-04-27 12:16:19 +0100
committerGitHub <noreply@github.com>2018-04-27 12:16:19 +0100
commit41d4b07a536ae53a992010a7ad4660488bd026d1 (patch)
tree4d0b7835933776ada72636394bac05a7de8813ad /synapse/handlers/message.py
parentUpdate CHANGES.rst (diff)
parentreraise exceptions more carefully (diff)
downloadsynapse-41d4b07a536ae53a992010a7ad4660488bd026d1.tar.xz
Merge pull request #3142 from matrix-org/rav/reraise
reraise exceptions more carefully
Diffstat (limited to 'synapse/handlers/message.py')
-rw-r--r--synapse/handlers/message.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index d168ff5b86..ad932bdd90 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -13,6 +13,12 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+import logging
+import simplejson
+import sys
+
+from canonicaljson import encode_canonical_json
+import six
 from twisted.internet import defer, reactor
 from twisted.python.failure import Failure
 
@@ -34,11 +40,6 @@ from synapse.replication.http.send_event import send_event_to_master
 
 from ._base import BaseHandler
 
-from canonicaljson import encode_canonical_json
-
-import logging
-import simplejson
-
 logger = logging.getLogger(__name__)
 
 
@@ -729,8 +730,14 @@ class EventCreationHandler(object):
         except:  # noqa: E722, as we reraise the exception this is fine.
             # Ensure that we actually remove the entries in the push actions
             # staging area, if we calculated them.
-            preserve_fn(self.store.remove_push_actions_from_staging)(event.event_id)
-            raise
+            tp, value, tb = sys.exc_info()
+
+            run_in_background(
+                self.store.remove_push_actions_from_staging,
+                event.event_id,
+            )
+
+            six.reraise(tp, value, tb)
 
     @defer.inlineCallbacks
     def persist_and_notify_client_event(