summary refs log tree commit diff
path: root/synapse/http/site.py
diff options
context:
space:
mode:
authorAndrew Morgan <1342360+anoadragon453@users.noreply.github.com>2020-05-14 17:07:24 +0100
committerGitHub <noreply@github.com>2020-05-14 17:07:24 +0100
commit5611644519e623a98ad38295eed8f95f78303a3e (patch)
tree5534c29336205f6ed6ebac486b517931b4fd5916 /synapse/http/site.py
parentFix b'GET' in prometheus metrics (#7503) (diff)
downloadsynapse-5611644519e623a98ad38295eed8f95f78303a3e.tar.xz
Workaround for failure to wrap reason in Failure (#7473)
Diffstat (limited to 'synapse/http/site.py')
-rw-r--r--synapse/http/site.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/synapse/http/site.py b/synapse/http/site.py
index 32feb0d968..514f2f1402 100644
--- a/synapse/http/site.py
+++ b/synapse/http/site.py
@@ -15,6 +15,7 @@ import contextlib
 import logging
 import time
 
+from twisted.python.failure import Failure
 from twisted.web.server import Request, Site
 
 from synapse.http import redact_uri
@@ -190,6 +191,12 @@ class SynapseRequest(Request):
         Overrides twisted.web.server.Request.connectionLost to record the finish time and
         do logging.
         """
+        # There is a bug in Twisted where reason is not wrapped in a Failure object
+        # Detect this and wrap it manually as a workaround
+        # More information: https://github.com/matrix-org/synapse/issues/7441
+        if not isinstance(reason, Failure):
+            reason = Failure(reason)
+
         self.finish_time = time.time()
         Request.connectionLost(self, reason)