summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/util/async_helpers.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/synapse/util/async_helpers.py b/synapse/util/async_helpers.py
index 2e12bcda98..2b2e85ecb7 100644
--- a/synapse/util/async_helpers.py
+++ b/synapse/util/async_helpers.py
@@ -421,11 +421,14 @@ def timeout_deferred(deferred, timeout, reactor, on_timeout_cancel=None):
     def time_it_out():
         timed_out[0] = True
 
+        try:
+            deferred.cancel()
+        except:   # noqa: E722, if we throw any exception it'll break time outs
+            logger.exception("Canceller failed during timeout")
+
         if not new_d.called:
             new_d.errback(DeferredTimeoutError(timeout, "Deferred"))
 
-        deferred.cancel()
-
     delayed_call = reactor.callLater(timeout, time_it_out)
 
     def convert_cancelled(value):