diff options
author | Erik Johnston <erik@matrix.org> | 2020-09-09 16:56:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-09 16:56:08 +0100 |
commit | c9dbee50aefc22390f600a0219ca7fa1ae9acd88 (patch) | |
tree | 4cdba63f3398d455aec93f9735618d86aa57072d /synapse/replication/tcp | |
parent | Revert "Fixup pusher pool notifications" (diff) | |
download | synapse-c9dbee50aefc22390f600a0219ca7fa1ae9acd88.tar.xz |
Fixup pusher pool notifications (#8287)
`pusher_pool.on_new_notifications` expected a min and max stream ID, however that was not what we were passing in. Instead, let's just pass it the current max stream ID and have it track the last stream ID it got passed. I believe that it mostly worked as we called the function for every event. However, it would break for events that got persisted out of order, i.e, that were persisted but the max stream ID wasn't incremented as not all preceding events had finished persisting, and push for that event would be delayed until another event got pushed to the effected users.
Diffstat (limited to 'synapse/replication/tcp')
-rw-r--r-- | synapse/replication/tcp/client.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/synapse/replication/tcp/client.py b/synapse/replication/tcp/client.py index d6ecf5b327..ccd3147dfd 100644 --- a/synapse/replication/tcp/client.py +++ b/synapse/replication/tcp/client.py @@ -154,7 +154,8 @@ class ReplicationDataHandler: max_token = self.store.get_room_max_stream_ordering() self.notifier.on_new_room_event(event, token, max_token, extra_users) - await self.pusher_pool.on_new_notifications(token, token) + max_token = self.store.get_room_max_stream_ordering() + await self.pusher_pool.on_new_notifications(max_token) # Notify any waiting deferreds. The list is ordered by position so we # just iterate through the list until we reach a position that is |