From cbeff5740251a09090822bde90b62ad626332e73 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Thu, 15 Aug 2024 20:31:57 -0500 Subject: [PATCH] Use helper --- synapse/storage/databases/main/events.py | 61 ++++-------------------- 1 file changed, 8 insertions(+), 53 deletions(-) diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py index 138afd324f..025576eb6e 100644 --- a/synapse/storage/databases/main/events.py +++ b/synapse/storage/databases/main/events.py @@ -1416,21 +1416,11 @@ class PersistEventsStore: # persisting stack (see # `_update_sliding_sync_tables_with_new_persisted_events_txn()`) # - event_ids_to_fetch: List[str] = [] - create_event_id = None - room_encryption_event_id = None - room_name_event_id = None bump_event_id = None + current_state_map = {} for state_key, event_id in to_insert.items(): - if state_key[0] == EventTypes.Create and state_key[1] == "": - create_event_id = event_id - event_ids_to_fetch.append(event_id) - elif state_key[0] == EventTypes.RoomEncryption and state_key[1] == "": - room_encryption_event_id = event_id - event_ids_to_fetch.append(event_id) - elif state_key[0] == EventTypes.Name and state_key[1] == "": - room_name_event_id = event_id - event_ids_to_fetch.append(event_id) + if state_key in SLIDING_SYNC_RELEVANT_STATE_SET: + current_state_map[state_key] = event_id if ( state_key[0] in SLIDING_SYNC_DEFAULT_BUMP_EVENT_TYPES @@ -1439,9 +1429,11 @@ class PersistEventsStore: bump_event_id = event_id # Map of values to insert/update in the `sliding_sync_joined_rooms` table - sliding_sync_joined_rooms_insert_map: Dict[ - str, Optional[Union[str, bool]] - ] = {} + sliding_sync_joined_rooms_insert_map = ( + self._get_sliding_sync_insert_values_from_current_state_map_txn( + txn, current_state_map + ) + ) # If something is being deleted from the state, we need to clear it out for state_key in to_delete: @@ -1452,43 +1444,6 @@ class PersistEventsStore: elif state_key == (EventTypes.Name, ""): sliding_sync_joined_rooms_insert_map["room_name"] = None - # Fetch the events from the database - event_json_rows = cast( - List[Tuple[str, str]], - self.db_pool.simple_select_many_txn( - txn, - table="event_json", - column="event_id", - iterable=event_ids_to_fetch, - retcols=["event_id", "json"], - keyvalues={}, - ), - ) - # Parse the raw event JSON - for event_id, json in event_json_rows: - event_json = db_to_json(json) - - if event_id == create_event_id: - room_type = event_json.get("content", {}).get( - EventContentFields.ROOM_TYPE - ) - sliding_sync_joined_rooms_insert_map["room_type"] = room_type - elif event_id == room_encryption_event_id: - encryption_algorithm = event_json.get("content", {}).get( - EventContentFields.ENCRYPTION_ALGORITHM - ) - is_encrypted = encryption_algorithm is not None - sliding_sync_joined_rooms_insert_map["is_encrypted"] = is_encrypted - elif event_id == room_name_event_id: - room_name = event_json.get("content", {}).get( - EventContentFields.ROOM_NAME - ) - sliding_sync_joined_rooms_insert_map["room_name"] = room_name - else: - raise AssertionError( - f"Unexpected event_id (we should not be fetching extra events): {event_id}" - ) - # Update the `sliding_sync_joined_rooms` table # # Pulling keys/values separately is safe and will produce congruent lists