From 15e0f1696f2556f72b65f14466df51e9a9f00c4b Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 7 Apr 2016 17:31:08 +0100 Subject: [PATCH] Wrap process in a flag so we don't process whist already processing. --- synapse/push/httppusher.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py index ea45b603c6..a0d0234e2e 100644 --- a/synapse/push/httppusher.py +++ b/synapse/push/httppusher.py @@ -48,6 +48,7 @@ class HttpPusher(object): self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC self.failing_since = pusherdict['failing_since'] self.timed_call = None + self.processing = False # This is the highest stream ordering we know it's safe to process. # When new events arrive, we'll be given a window of new events: we @@ -109,6 +110,14 @@ class HttpPusher(object): @defer.inlineCallbacks def _process(self): + try: + self.processing = True + yield self._unsafe_process() + finally: + self.processing = False + + @defer.inlineCallbacks + def _unsafe_process(self): unprocessed = yield self.store.get_unread_push_actions_for_user_in_range( self.user_id, self.last_stream_ordering, self.max_stream_ordering )