diff options
author | David Baker <dave@matrix.org> | 2016-04-07 17:31:08 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2016-04-07 17:31:08 +0100 |
commit | 15e0f1696f2556f72b65f14466df51e9a9f00c4b (patch) | |
tree | 9cf940228451535e3d21e59b582163bda2917c43 | |
parent | indenting (diff) | |
download | synapse-15e0f1696f2556f72b65f14466df51e9a9f00c4b.tar.xz |
Wrap process in a flag so we don't process whist already processing.
-rw-r--r-- | synapse/push/httppusher.py | 9 |
1 files changed, 9 insertions, 0 deletions
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 ) |