diff options
author | Erik Johnston <erik@matrix.org> | 2019-04-02 16:45:33 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-04-02 16:59:13 +0100 |
commit | 5bec8d660d4b7d940336048c2ce937225840b5f4 (patch) | |
tree | ab7d1c156e0995658ac0e52e0078337638c87094 /synapse/push/httppusher.py | |
parent | Fix sync bug when accepting invites (#4956) (diff) | |
download | synapse-5bec8d660d4b7d940336048c2ce937225840b5f4.tar.xz |
Make starting pushers faster during start up
We start all pushers on start up and immediately start a background process to fetch push to send. This makes start up incredibly painful when dealing with many pushers. Instead, let's do a quick fast DB check to see if there *may* be push to send and only start the background processes for those pushers. We also stagger starting up and doing those checks so that we don't try and handle all pushers at once.
Diffstat (limited to 'synapse/push/httppusher.py')
-rw-r--r-- | synapse/push/httppusher.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/synapse/push/httppusher.py b/synapse/push/httppusher.py index e65f8c63d3..fac05aa44c 100644 --- a/synapse/push/httppusher.py +++ b/synapse/push/httppusher.py @@ -112,8 +112,16 @@ class HttpPusher(object): self.data_minus_url.update(self.data) del self.data_minus_url['url'] - def on_started(self): - self._start_processing() + def on_started(self, should_check_for_notifs): + """Called when this pusher has been started. + + Args: + should_check_for_notifs (bool): Whether we should immediately + check for push to send. Set to False only if it's known there + is nothing to send + """ + if should_check_for_notifs: + self._start_processing() def on_new_notifications(self, min_stream_ordering, max_stream_ordering): self.max_stream_ordering = max(max_stream_ordering, self.max_stream_ordering or 0) |