@@ -454,6 +454,10 @@ async def process_remote_join(
454454 room_id , itertools .chain (auth_events , state )
455455 )
456456
457+ logger .info (
458+ "process_remote_join state=%s partial_state=%s" , state , partial_state
459+ )
460+
457461 # and now persist the join event itself.
458462 logger .info (
459463 "Peristing join-via-remote %s (partial_state: %s)" , event , partial_state
@@ -475,7 +479,19 @@ async def process_remote_join(
475479 # and discover that we do not have it.
476480 event .internal_metadata .proactively_send = False
477481
478- return await self .persist_events_and_notify (room_id , [(event , context )])
482+ stream_id_after_persist = await self .persist_events_and_notify (
483+ room_id , [(event , context )]
484+ )
485+
486+ # Do this after the state from the remote join was persisted (via
487+ # `persist_events_and_notify`). Otherwise we can run into a
488+ # situation where the create event doesn't exist yet in the
489+ # `current_state_events`
490+ for e in state :
491+ await self ._handle_marker_event (origin , e )
492+ # TODO: Loop through previous state to find other markers
493+
494+ return stream_id_after_persist
479495
480496 async def update_state_for_partial_state_event (
481497 self , destination : str , event : EventBase
@@ -1200,25 +1216,40 @@ async def _handle_marker_event(self, origin: str, marker_event: EventBase) -> No
12001216 """
12011217
12021218 if marker_event .type != EventTypes .MSC2716_MARKER :
1219+ # logger.info(
1220+ # "_handle_marker_event not a marker event marker_event.type=%s",
1221+ # marker_event.type,
1222+ # )
12031223 # Not a marker event
12041224 return
12051225
1226+ logger .info ("_handle_marker_event next 0000000000000000000000000000000000" )
1227+
12061228 if marker_event .rejected_reason is not None :
1229+ logger .info (
1230+ "_handle_marker_event rejected %s" , marker_event .rejected_reason
1231+ )
12071232 # Rejected event
12081233 return
12091234
1235+ logger .info ("_handle_marker_event next 1111111111111111111111111111111111" )
1236+
12101237 # Skip processing a marker event if the room version doesn't
12111238 # support it or the event is not from the room creator.
12121239 room_version = await self ._store .get_room_version (marker_event .room_id )
1240+ logger .info ("_handle_marker_event next 2222222222222222222222222222222222" )
12131241 create_event = await self ._store .get_create_event_for_room (marker_event .room_id )
1242+ logger .info ("_handle_marker_event next 3333333333333333333333333333333333" )
12141243 room_creator = create_event .content .get (EventContentFields .ROOM_CREATOR )
1244+ logger .info ("_handle_marker_event next 4444444444444444444444444444444444" )
12151245 if not room_version .msc2716_historical and (
12161246 not self ._config .experimental .msc2716_enabled
12171247 or marker_event .sender != room_creator
12181248 ):
1249+ logger .info ("_handle_marker_event skipping room_version=%s" , room_version )
12191250 return
12201251
1221- logger .debug ("_handle_marker_event: received %s" , marker_event )
1252+ logger .info ("_handle_marker_event: received %s" , marker_event )
12221253
12231254 insertion_event_id = marker_event .content .get (
12241255 EventContentFields .MSC2716_MARKER_INSERTION
@@ -1228,7 +1259,7 @@ async def _handle_marker_event(self, origin: str, marker_event: EventBase) -> No
12281259 # Nothing to retrieve then (invalid marker)
12291260 return
12301261
1231- logger .debug (
1262+ logger .info (
12321263 "_handle_marker_event: backfilling insertion event %s" , insertion_event_id
12331264 )
12341265
@@ -1260,7 +1291,7 @@ async def _handle_marker_event(self, origin: str, marker_event: EventBase) -> No
12601291 insertion_event_id , marker_event .room_id
12611292 )
12621293
1263- logger .debug (
1294+ logger .info (
12641295 "_handle_marker_event: insertion extremity added for %s from marker event %s" ,
12651296 insertion_event ,
12661297 marker_event ,
@@ -1947,6 +1978,8 @@ async def persist_events_and_notify(
19471978 Returns:
19481979 The stream ID after which all events have been persisted.
19491980 """
1981+ # logger.info("persist_events_and_notify event_and_contexts(%d)=%s", len(event_and_contexts), event_and_contexts)
1982+
19501983 if not event_and_contexts :
19511984 return self ._store .get_room_max_stream_ordering ()
19521985
0 commit comments