Handle pusher being deleted during processing.

Instead of throwing a StoreError lets break out of processing loop and
mark the pusher as stopped.
This commit is contained in:
Erik Johnston 2019-08-01 13:41:27 +01:00
parent 58af30a6c7
commit d02e41dcb2
3 changed files with 55 additions and 21 deletions

View file

@ -234,13 +234,20 @@ class EmailPusher(object):
return
self.last_stream_ordering = last_stream_ordering
yield self.store.update_pusher_last_stream_ordering_and_success(
self.app_id,
self.email,
self.user_id,
last_stream_ordering,
self.clock.time_msec(),
pusher_still_exists = (
yield self.store.update_pusher_last_stream_ordering_and_success(
self.app_id,
self.email,
self.user_id,
last_stream_ordering,
self.clock.time_msec(),
)
)
if not pusher_still_exists:
# The pusher has been deleted while we were processing, so
# lets just stop and return.
self.on_stop()
return
def seconds_until(self, ts_msec):
secs = (ts_msec - self.clock.time_msec()) / 1000