From 2a12afff914702da4335dea477260afc32da82da Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 6 Oct 2021 23:19:01 +0100 Subject: [PATCH 1/3] Rename _auth_and_persist_fetched_events ... to `_auth_and_persist_outliers`, since that reflects its purpose better. --- synapse/handlers/federation_event.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py index af2c88394d0a..50d821396701 100644 --- a/synapse/handlers/federation_event.py +++ b/synapse/handlers/federation_event.py @@ -1116,14 +1116,12 @@ async def get_event(event_id: str) -> None: await concurrently_execute(get_event, event_ids, 5) logger.info("Fetched %i events of %i requested", len(events), len(event_ids)) - await self._auth_and_persist_fetched_events(destination, room_id, events) + await self._auth_and_persist_outliers(destination, room_id, events) - async def _auth_and_persist_fetched_events( + async def _auth_and_persist_outliers( self, origin: str, room_id: str, events: Iterable[EventBase] ) -> None: - """Persist the events fetched by _get_events_and_persist or _get_remote_auth_chain_for_event - - The events to be persisted must be outliers. + """Persist a batch of outlier events fetched from remote servers. We first sort the events to make sure that we process each event's auth_events before the event itself, and then auth and persist them. @@ -1167,15 +1165,15 @@ async def _auth_and_persist_fetched_events( shortstr(e.event_id for e in roots), ) - await self._auth_and_persist_fetched_events_inner(origin, room_id, roots) + await self._auth_and_persist_outliers_inner(origin, room_id, roots) for ev in roots: del event_map[ev.event_id] - async def _auth_and_persist_fetched_events_inner( + async def _auth_and_persist_outliers_inner( self, origin: str, room_id: str, fetched_events: Collection[EventBase] ) -> None: - """Helper for _auth_and_persist_fetched_events + """Helper for _auth_and_persist_outliers Persists a batch of events where we have (theoretically) already persisted all of their auth events. @@ -1719,7 +1717,7 @@ async def _get_remote_auth_chain_for_event( for s in seen_remotes: remote_event_map.pop(s, None) - await self._auth_and_persist_fetched_events( + await self._auth_and_persist_outliers( destination, room_id, remote_event_map.values() ) From 270f685a76ae2e0cba70eb886f7d46ed0d64dabc Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 7 Oct 2021 01:05:00 +0100 Subject: [PATCH 2/3] _auth_and_persist_outliers: remove `origin` param ... since it's unused. --- synapse/handlers/federation_event.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/synapse/handlers/federation_event.py b/synapse/handlers/federation_event.py index 50d821396701..22d364800b83 100644 --- a/synapse/handlers/federation_event.py +++ b/synapse/handlers/federation_event.py @@ -1116,10 +1116,10 @@ async def get_event(event_id: str) -> None: await concurrently_execute(get_event, event_ids, 5) logger.info("Fetched %i events of %i requested", len(events), len(event_ids)) - await self._auth_and_persist_outliers(destination, room_id, events) + await self._auth_and_persist_outliers(room_id, events) async def _auth_and_persist_outliers( - self, origin: str, room_id: str, events: Iterable[EventBase] + self, room_id: str, events: Iterable[EventBase] ) -> None: """Persist a batch of outlier events fetched from remote servers. @@ -1129,7 +1129,6 @@ async def _auth_and_persist_outliers( Notifies about the events where appropriate. Params: - origin: where the events came from room_id: the room that the events are meant to be in (though this has not yet been checked) events: the events that have been fetched @@ -1165,13 +1164,13 @@ async def _auth_and_persist_outliers( shortstr(e.event_id for e in roots), ) - await self._auth_and_persist_outliers_inner(origin, room_id, roots) + await self._auth_and_persist_outliers_inner(room_id, roots) for ev in roots: del event_map[ev.event_id] async def _auth_and_persist_outliers_inner( - self, origin: str, room_id: str, fetched_events: Collection[EventBase] + self, room_id: str, fetched_events: Collection[EventBase] ) -> None: """Helper for _auth_and_persist_outliers @@ -1717,9 +1716,7 @@ async def _get_remote_auth_chain_for_event( for s in seen_remotes: remote_event_map.pop(s, None) - await self._auth_and_persist_outliers( - destination, room_id, remote_event_map.values() - ) + await self._auth_and_persist_outliers(room_id, remote_event_map.values()) async def _update_context_for_auth_events( self, event: EventBase, context: EventContext, auth_events: StateMap[EventBase] From e900a2f5ed9b40ea4d197861a5e70da3c2d6ad35 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 18 Oct 2021 22:31:37 +0100 Subject: [PATCH 3/3] changelog --- changelog.d/11116.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/11116.misc diff --git a/changelog.d/11116.misc b/changelog.d/11116.misc new file mode 100644 index 000000000000..9a765435dbe4 --- /dev/null +++ b/changelog.d/11116.misc @@ -0,0 +1 @@ +Clean up some of the federation event authentication code for clarity.