diff options
author | David Robertson <davidr@element.io> | 2022-12-14 14:52:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-14 14:52:35 +0000 |
commit | 4f4d69042345134c040de137a8e1aa108ff71acb (patch) | |
tree | 3d7cf1ec7fb9be45750a25081045b79c80cfb505 /synapse/state | |
parent | Faster remote room joins: stream the un-partial-stating of events over replic... (diff) | |
download | synapse-4f4d69042345134c040de137a8e1aa108ff71acb.tar.xz |
Allow `compute_state_after_events` to use partial state (#14676)
* Allow `compute_state_after_events` to use partial state if fetching a subset of state that is trusted during a partial join. * Changelog
Diffstat (limited to 'synapse/state')
-rw-r--r-- | synapse/state/__init__.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/synapse/state/__init__.py b/synapse/state/__init__.py index ee5469d5a8..fdfb46ab82 100644 --- a/synapse/state/__init__.py +++ b/synapse/state/__init__.py @@ -202,14 +202,20 @@ class StateHandler: room_id: the room_id containing the given events. event_ids: the events whose state should be fetched and resolved. await_full_state: if `True`, will block if we do not yet have complete state - at the given `event_id`s, regardless of whether `state_filter` is - satisfied by partial state. + at these events and `state_filter` is not satisfied by partial state. + Defaults to `True`. Returns: the state dict (a mapping from (event_type, state_key) -> event_id) which holds the resolution of the states after the given event IDs. """ logger.debug("calling resolve_state_groups from compute_state_after_events") + if ( + await_full_state + and state_filter + and not state_filter.must_await_full_state(self.hs.is_mine_id) + ): + await_full_state = False ret = await self.resolve_state_groups_for_events( room_id, event_ids, await_full_state ) |