summary refs log tree commit diff
path: root/synapse/state/__init__.py
diff options
context:
space:
mode:
authorDavid Robertson <davidr@element.io>2022-12-14 14:52:35 +0000
committerGitHub <noreply@github.com>2022-12-14 14:52:35 +0000
commit4f4d69042345134c040de137a8e1aa108ff71acb (patch)
tree3d7cf1ec7fb9be45750a25081045b79c80cfb505 /synapse/state/__init__.py
parentFaster remote room joins: stream the un-partial-stating of events over replic... (diff)
downloadsynapse-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/__init__.py')
-rw-r--r--synapse/state/__init__.py10
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
         )