From 41e2f4961b1a277898524fffe79710eaa1e8ecb3 Mon Sep 17 00:00:00 2001 From: Devon Hudson Date: Mon, 24 Mar 2025 14:22:38 -0600 Subject: [PATCH 1/2] HACK: Fix to send remote invite rejection down SSS --- synapse/storage/databases/main/events.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py index dd6ac909e9..da6ae8024a 100644 --- a/synapse/storage/databases/main/events.py +++ b/synapse/storage/databases/main/events.py @@ -562,7 +562,8 @@ class PersistEventsStore: # # Ideally, we could additionally assert that we're only here for # valid non-join membership transitions. - assert delta_state.no_longer_in_room + #assert delta_state.no_longer_in_room + pass # Handle gathering info for the `sliding_sync_joined_rooms` table # From 717fcf2b19efc78e3016e2d83220b4d32fa94b6b Mon Sep 17 00:00:00 2001 From: Devon Hudson Date: Mon, 24 Mar 2025 14:26:02 -0600 Subject: [PATCH 2/2] Add hacks to fix remote invite rejection --- synapse/storage/controllers/persist_events.py | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/synapse/storage/controllers/persist_events.py b/synapse/storage/controllers/persist_events.py index 879ee9039e..8e5ff1db78 100644 --- a/synapse/storage/controllers/persist_events.py +++ b/synapse/storage/controllers/persist_events.py @@ -508,9 +508,13 @@ class EventsPersistenceStorageController: ) ) - await self.persist_events_store.update_current_state( - room_id, delta, sliding_sync_table_changes - ) + logger.error("Devon: persist update_current_state: %s %s %s", state, delta, sliding_sync_table_changes) + + # FIXME: Devon removed this to stop deleting the leave event from the sliding sync + # tables + # await self.persist_events_store.update_current_state( + # room_id, delta, sliding_sync_table_changes + # ) async def _calculate_current_state(self, room_id: str) -> StateMap[str]: """Calculate the current state of a room, based on the forward extremities @@ -635,6 +639,20 @@ class EventsPersistenceStorageController: room_id, [e for e, _ in chunk] ) + # FIXME: Temporary hack to add remote invite to state delta + if not new_forward_extremities: + state_map: MutableStateMap[str] = {} + for (a, _) in chunk: + if a.type == EventTypes.Member and a.membership == Membership.LEAVE: + state_key = a.get_state_key() + if state_key: + logger.error("Devon: injecting hack into state map") + state_map[(a.type, state_key)] = a.event_id + + if state_map: + state_delta_for_room = DeltaState([], state_map, False) + + logger.error("Devon: state delta for room: %s", state_delta_for_room) await self.persist_events_store._persist_events_and_state_updates( room_id, chunk,