summary refs log tree commit diff
path: root/synapse/push/httppusher.py
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-08-13 15:54:01 +0100
committerBrendan Abolivier <babolivier@matrix.org>2019-08-13 15:54:01 +0100
commita7efbc541601927904196bcf220a99e666a9a4a4 (patch)
treeff065ad5d403adfb72eb00160696205823299b54 /synapse/push/httppusher.py
parentMerge remote-tracking branch 'origin/develop' into matrix-org-hotfixes (diff)
parentMerge pull request #5809 from matrix-org/erikj/handle_pusher_stop (diff)
downloadsynapse-a7efbc541601927904196bcf220a99e666a9a4a4.tar.xz
Merge branch 'release-v1.3.0' of github.com:matrix-org/synapse into matrix-org-hotfixes
Diffstat (limited to 'synapse/push/httppusher.py')
-rw-r--r--synapse/push/httppusher.py27
1 files changed, 20 insertions, 7 deletions
diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py

index bfe3b36d52..bf65cfa21a 100644 --- a/synapse/push/httppusher.py +++ b/synapse/push/httppusher.py
@@ -203,13 +203,21 @@ class HttpPusher(object): http_push_processed_counter.inc() self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.last_stream_ordering = push_action["stream_ordering"] - yield self.store.update_pusher_last_stream_ordering_and_success( - self.app_id, - self.pushkey, - self.user_id, - self.last_stream_ordering, - self.clock.time_msec(), + pusher_still_exists = ( + yield self.store.update_pusher_last_stream_ordering_and_success( + self.app_id, + self.pushkey, + self.user_id, + self.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 + if self.failing_since: self.failing_since = None yield self.store.update_pusher_failing_since( @@ -238,12 +246,17 @@ class HttpPusher(object): ) self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.last_stream_ordering = push_action["stream_ordering"] - yield self.store.update_pusher_last_stream_ordering( + pusher_still_exists = yield self.store.update_pusher_last_stream_ordering( self.app_id, self.pushkey, self.user_id, self.last_stream_ordering, ) + if not pusher_still_exists: + # The pusher has been deleted while we were processing, so + # lets just stop and return. + self.on_stop() + return self.failing_since = None yield self.store.update_pusher_failing_since(