diff options
author | Erik Johnston <erik@matrix.org> | 2018-09-19 10:39:40 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2018-09-19 10:39:40 +0100 |
commit | a334e1cacec5dd9c1a983415906d8ffea4a30134 (patch) | |
tree | 026fa629ce6212c0d093f6f9b148bdee135a4194 /synapse/notifier.py | |
parent | update changelog for #3909 (diff) | |
download | synapse-a334e1cacec5dd9c1a983415906d8ffea4a30134.tar.xz |
Update to use new timeout function everywhere.
The existing deferred timeout helper function (and the one into twisted) suffer from a bug when a deferred's canceller throws an exception, #3842. The new helper function doesn't suffer from this problem.
Diffstat (limited to 'synapse/notifier.py')
-rw-r--r-- | synapse/notifier.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/synapse/notifier.py b/synapse/notifier.py index 82f391481c..2d683718fb 100644 --- a/synapse/notifier.py +++ b/synapse/notifier.py @@ -28,7 +28,7 @@ from synapse.types import StreamToken from synapse.util.async_helpers import ( DeferredTimeoutError, ObservableDeferred, - add_timeout_to_deferred, + timeout_deferred, ) from synapse.util.logcontext import PreserveLoggingContext, run_in_background from synapse.util.logutils import log_function @@ -337,7 +337,7 @@ class Notifier(object): # Now we wait for the _NotifierUserStream to be told there # is a new token. listener = user_stream.new_listener(prev_token) - add_timeout_to_deferred( + listener.deferred = timeout_deferred( listener.deferred, (end_time - now) / 1000., self.hs.get_reactor(), @@ -559,11 +559,12 @@ class Notifier(object): if end_time <= now: break - add_timeout_to_deferred( - listener.deferred.addTimeout, - (end_time - now) / 1000., - self.hs.get_reactor(), + listener.deferred = timeout_deferred( + listener.deferred, + timeout=(end_time - now) / 1000., + reactor=self.hs.get_reactor(), ) + try: with PreserveLoggingContext(): yield listener.deferred |