Run canceller first to allow it to generate correct error

pull/14/head
Erik Johnston 6 years ago
parent 6bbe3d5732
commit 6c48aa0256
  1. 7
      synapse/util/async_helpers.py

@ -421,11 +421,14 @@ def timeout_deferred(deferred, timeout, reactor, on_timeout_cancel=None):
def time_it_out(): def time_it_out():
timed_out[0] = True 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: if not new_d.called:
new_d.errback(DeferredTimeoutError(timeout, "Deferred")) new_d.errback(DeferredTimeoutError(timeout, "Deferred"))
deferred.cancel()
delayed_call = reactor.callLater(timeout, time_it_out) delayed_call = reactor.callLater(timeout, time_it_out)
def convert_cancelled(value): def convert_cancelled(value):

Loading…
Cancel
Save