diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py
index 09d0de1ead..4bd87709f3 100644
--- a/synapse/handlers/federation_event.py
+++ b/synapse/handlers/federation_event.py
@@ -397,6 +397,7 @@ class FederationEventHandler:
state: List[EventBase],
event: EventBase,
room_version: RoomVersion,
+ partial_state: bool,
) -> int:
"""Persists the events returned by a send_join
@@ -412,6 +413,7 @@ class FederationEventHandler:
event
room_version: The room version we expect this room to have, and
will raise if it doesn't match the version in the create event.
+ partial_state: True if the state omits non-critical membership events
Returns:
The stream ID after which all events have been persisted.
@@ -453,10 +455,14 @@ class FederationEventHandler:
)
# and now persist the join event itself.
- logger.info("Peristing join-via-remote %s", event)
+ logger.info(
+ "Peristing join-via-remote %s (partial_state: %s)", event, partial_state
+ )
with nested_logging_context(suffix=event.event_id):
context = await self._state_handler.compute_event_context(
- event, old_state=state
+ event,
+ old_state=state,
+ partial_state=partial_state,
)
context = await self._check_event_auth(origin, event, context)
@@ -698,6 +704,8 @@ class FederationEventHandler:
try:
state = await self._resolve_state_at_missing_prevs(origin, event)
+ # TODO(faster_joins): make sure that _resolve_state_at_missing_prevs does
+ # not return partial state
await self._process_received_pdu(
origin, event, state=state, backfilled=backfilled
)
@@ -1791,6 +1799,7 @@ class FederationEventHandler:
prev_state_ids=prev_state_ids,
prev_group=prev_group,
delta_ids=state_updates,
+ partial_state=context.partial_state,
)
async def _run_push_actions_and_persist_event(
|