mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-12-15 13:48:57 -05:00
Merge pull request #1921 from matrix-org/rav/fix_key_changes
Fix bugs in the /keys/changes api
This commit is contained in:
commit
7dcbcca68c
3 changed files with 58 additions and 11 deletions
|
|
@ -281,15 +281,30 @@ class EventFederationStore(SQLBaseStore):
|
|||
)
|
||||
|
||||
def get_forward_extremeties_for_room(self, room_id, stream_ordering):
|
||||
"""For a given room_id and stream_ordering, return the forward
|
||||
extremeties of the room at that point in "time".
|
||||
|
||||
Throws a StoreError if we have since purged the index for
|
||||
stream_orderings from that point.
|
||||
|
||||
Args:
|
||||
room_id (str):
|
||||
stream_ordering (int):
|
||||
|
||||
Returns:
|
||||
deferred, which resolves to a list of event_ids
|
||||
"""
|
||||
# We want to make the cache more effective, so we clamp to the last
|
||||
# change before the given ordering.
|
||||
last_change = self._events_stream_cache.get_max_pos_of_last_change(room_id)
|
||||
|
||||
# We don't always have a full stream_to_exterm_id table, e.g. after
|
||||
# the upgrade that introduced it, so we make sure we never ask for a
|
||||
# try and pin to a stream_ordering from before a restart
|
||||
# stream_ordering from before a restart
|
||||
last_change = max(self._stream_order_on_start, last_change)
|
||||
|
||||
# provided the last_change is recent enough, we now clamp the requested
|
||||
# stream_ordering to it.
|
||||
if last_change > self.stream_ordering_month_ago:
|
||||
stream_ordering = min(last_change, stream_ordering)
|
||||
|
||||
|
|
|
|||
|
|
@ -413,7 +413,19 @@ class StateStore(SQLBaseStore):
|
|||
defer.returnValue({event: event_to_state[event] for event in event_ids})
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def get_state_ids_for_events(self, event_ids, types):
|
||||
def get_state_ids_for_events(self, event_ids, types=None):
|
||||
"""
|
||||
Get the state dicts corresponding to a list of events
|
||||
|
||||
Args:
|
||||
event_ids(list(str)): events whose state should be returned
|
||||
types(list[(str, str)]|None): List of (type, state_key) tuples
|
||||
which are used to filter the state fetched. May be None, which
|
||||
matches any key
|
||||
|
||||
Returns:
|
||||
A deferred dict from event_id -> (type, state_key) -> state_event
|
||||
"""
|
||||
event_to_groups = yield self._get_state_group_for_events(
|
||||
event_ids,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue