diff options
author | Erik Johnston <erik@matrix.org> | 2016-09-23 15:31:47 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-09-23 16:49:21 +0100 |
commit | 748d8fdc7bcdb43719e99a48cc74bf078f22396f (patch) | |
tree | 19ea8ddc1692448cb2818ecd42b5512014e12caa /synapse/app/pusher.py | |
parent | Merge pull request #1136 from matrix-org/erikj/fix_signed_3pid (diff) | |
download | synapse-748d8fdc7bcdb43719e99a48cc74bf078f22396f.tar.xz |
Reduce DB hits for replication
Some streams will occaisonally advance their positions without actually having any new rows to send over federation. Currently this means that the token will not advance on the workers, leading to them repeatedly sending a slightly out of date token. This in turns requires the master to hit the DB to check if there are any new rows, rather than hitting the no op logic where we check if the given token matches the current token. This commit changes the API to always return an entry if the position for a stream has changed, allowing workers to advance their tokens correctly.
Diffstat (limited to 'synapse/app/pusher.py')
-rw-r--r-- | synapse/app/pusher.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/synapse/app/pusher.py b/synapse/app/pusher.py index d59f4a571c..1a6f5507a9 100644 --- a/synapse/app/pusher.py +++ b/synapse/app/pusher.py @@ -197,7 +197,7 @@ class PusherServer(HomeServer): yield start_pusher(user_id, app_id, pushkey) stream = results.get("events") - if stream: + if stream and stream["rows"]: min_stream_id = stream["rows"][0][0] max_stream_id = stream["position"] preserve_fn(pusher_pool.on_new_notifications)( @@ -205,7 +205,7 @@ class PusherServer(HomeServer): ) stream = results.get("receipts") - if stream: + if stream and stream["rows"]: rows = stream["rows"] affected_room_ids = set(row[1] for row in rows) min_stream_id = rows[0][0] |