diff options
author | Erik Johnston <erik@matrix.org> | 2022-07-25 10:21:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-25 09:21:06 +0000 |
commit | 43adf2521cc6952dcc7f0e3006dbfe52db85721a (patch) | |
tree | 6c061b210fe82c3b4c3f5209d3de62b56acaa5f6 /synapse/storage/_base.py | |
parent | Backfill remote event fetched by MSC3030 so we can paginate from it later (... (diff) | |
download | synapse-43adf2521cc6952dcc7f0e3006dbfe52db85721a.tar.xz |
Refactor presence so we can prune user in room caches (#13313)
See #10826 and #10786 for context as to why we had to disable pruning on those caches. Now that `get_users_who_share_room_with_user` is called frequently only for presence, we just need to make calls to it less frequent and then we can remove the various levels of caching that is going on.
Diffstat (limited to 'synapse/storage/_base.py')
-rw-r--r-- | synapse/storage/_base.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py index a2f8310388..e30f9c76d4 100644 --- a/synapse/storage/_base.py +++ b/synapse/storage/_base.py @@ -80,6 +80,10 @@ class SQLBaseStore(metaclass=ABCMeta): ) self._attempt_to_invalidate_cache("get_local_users_in_room", (room_id,)) + # There's no easy way of invalidating this cache for just the users + # that have changed, so we just clear the entire thing. + self._attempt_to_invalidate_cache("does_pair_of_users_share_a_room", None) + for user_id in members_changed: self._attempt_to_invalidate_cache( "get_user_in_room_with_profile", (room_id, user_id) |