Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Merge pull request #5531 from matrix-org/erikj/workers_pagination_token
Browse files Browse the repository at this point in the history
  • Loading branch information
anoadragon453 committed Feb 13, 2020
2 parents 09deace + 25433f2 commit bb298f3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 17 deletions.
1 change: 1 addition & 0 deletions changelog.d/5531.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add support for handling pagination APIs on client reader worker.
4 changes: 1 addition & 3 deletions synapse/handlers/pagination.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,7 @@ def get_messages(
room_token = pagin_config.from_token.room_key
else:
pagin_config.from_token = (
yield self.hs.get_event_sources().get_current_token_for_room(
room_id=room_id
)
yield self.hs.get_event_sources().get_current_token_for_pagination()
)
room_token = pagin_config.from_token.room_key

Expand Down
32 changes: 18 additions & 14 deletions synapse/streams/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,21 +59,25 @@ def get_current_token(self):
defer.returnValue(token)

@defer.inlineCallbacks
def get_current_token_for_room(self, room_id):
push_rules_key, _ = self.store.get_push_rules_stream_token()
to_device_key = self.store.get_to_device_stream_token()
device_list_key = self.store.get_device_stream_token()
groups_key = self.store.get_group_stream_token()
def get_current_token_for_pagination(self):
"""Get the current token for a given room to be used to paginate
events.
The returned token does not have the current values for fields other
than `room`, since they are not used during pagination.
Retuns:
Deferred[StreamToken]
"""
token = StreamToken(
room_key=(yield self.sources["room"].get_current_key_for_room(room_id)),
presence_key=(yield self.sources["presence"].get_current_key()),
typing_key=(yield self.sources["typing"].get_current_key()),
receipt_key=(yield self.sources["receipt"].get_current_key()),
account_data_key=(yield self.sources["account_data"].get_current_key()),
push_rules_key=push_rules_key,
to_device_key=to_device_key,
device_list_key=device_list_key,
groups_key=groups_key,
room_key=(yield self.sources["room"].get_current_key()),
presence_key=0,
typing_key=0,
receipt_key=0,
account_data_key=0,
push_rules_key=0,
to_device_key=0,
device_list_key=0,
groups_key=0,
)
defer.returnValue(token)

0 comments on commit bb298f3

Please sign in to comment.