From 4b5a1a45dad032aa7c1c9ea521bf0d27a611aef3 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Fri, 20 May 2022 18:50:59 +0100 Subject: Don't pull out stuff for push --- synapse/storage/databases/main/cache.py | 1 + synapse/storage/databases/main/events.py | 4 ++++ synapse/storage/databases/main/roommember.py | 9 +++++++++ 3 files changed, 14 insertions(+) (limited to 'synapse/storage/databases') diff --git a/synapse/storage/databases/main/cache.py b/synapse/storage/databases/main/cache.py index 1653a6a9b6..a07d48f66c 100644 --- a/synapse/storage/databases/main/cache.py +++ b/synapse/storage/databases/main/cache.py @@ -217,6 +217,7 @@ class CacheInvalidationWorkerStore(SQLBaseStore): if etype == EventTypes.Member: self._membership_stream_cache.entity_has_changed(state_key, stream_ordering) self.get_invited_rooms_for_local_user.invalidate((state_key,)) + self.get_local_users_in_room.invalidate((room_id,)) if relates_to: self.get_relations_for_event.invalidate((relates_to,)) diff --git a/synapse/storage/databases/main/events.py b/synapse/storage/databases/main/events.py index 0df8ff5395..28190bf6f5 100644 --- a/synapse/storage/databases/main/events.py +++ b/synapse/storage/databases/main/events.py @@ -1766,6 +1766,10 @@ class PersistEventsStore: self.store.get_invited_rooms_for_local_user.invalidate, (event.state_key,), ) + txn.call_after( + self.store.get_local_users_in_room.invalidate, + (event.room_id,), + ) # The `_get_membership_from_event_id` is immutable, except for the # case where we look up an event *before* persisting it. diff --git a/synapse/storage/databases/main/roommember.py b/synapse/storage/databases/main/roommember.py index cc528fcf2d..70a30e75b0 100644 --- a/synapse/storage/databases/main/roommember.py +++ b/synapse/storage/databases/main/roommember.py @@ -444,6 +444,15 @@ class RoomMemberWorkerStore(EventsWorkerStore): return results + @cached() + async def get_local_users_in_room(self, room_id: str) -> List[str]: + return await self.db_pool.simple_select_onecol( + table="local_current_membership", + keyvalues={"room_id": room_id, "membership": Membership.JOIN}, + retcol="user_id", + desc="get_local_users_in_room", + ) + async def get_local_current_membership_for_user_in_room( self, user_id: str, room_id: str ) -> Tuple[Optional[str], Optional[str]]: -- cgit 1.5.1