diff options
author | Erik Johnston <erik@matrix.org> | 2014-11-26 18:04:33 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-11-26 18:04:33 +0000 |
commit | 00ab5cd6f2bd3952e1216f13794c9ff392736ad7 (patch) | |
tree | b0c92d66f77847096dd595d525200307dc92a2eb /synapse | |
parent | Add a workaround for bug where some initial join events don't reference creat... (diff) | |
download | synapse-00ab5cd6f2bd3952e1216f13794c9ff392736ad7.tar.xz |
Attempt to fix bug where we 500d an event stream due to trying to cancel a timer twice
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/events.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py index d59221a4fb..02202692d4 100644 --- a/synapse/handlers/events.py +++ b/synapse/handlers/events.py @@ -53,8 +53,12 @@ class EventStreamHandler(BaseHandler): if auth_user not in self._streams_per_user: self._streams_per_user[auth_user] = 0 if auth_user in self._stop_timer_per_user: - self.clock.cancel_call_later( - self._stop_timer_per_user.pop(auth_user)) + try: + self.clock.cancel_call_later( + self._stop_timer_per_user.pop(auth_user) + ) + except: + logger.exception("Failed to cancel event timer") else: yield self.distributor.fire( "started_user_eventstream", auth_user @@ -95,10 +99,12 @@ class EventStreamHandler(BaseHandler): logger.debug( "_later stopped_user_eventstream %s", auth_user ) + + self._stop_timer_per_user.pop(auth_user, None) + yield self.distributor.fire( "stopped_user_eventstream", auth_user ) - del self._stop_timer_per_user[auth_user] logger.debug("Scheduling _later: for %s", auth_user) self._stop_timer_per_user[auth_user] = ( |