Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 9d2823a

Browse files
authored
Cache is_partial_state_room (#13693)
Fixes #13613.
1 parent c913e44 commit 9d2823a

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

changelog.d/13693.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add cache to `is_partial_state_room`.

synapse/storage/databases/main/room.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,8 +1185,9 @@ async def clear_partial_state_room(self, room_id: str) -> bool:
11851185
)
11861186
return False
11871187

1188-
@staticmethod
1189-
def _clear_partial_state_room_txn(txn: LoggingTransaction, room_id: str) -> None:
1188+
def _clear_partial_state_room_txn(
1189+
self, txn: LoggingTransaction, room_id: str
1190+
) -> None:
11901191
DatabasePool.simple_delete_txn(
11911192
txn,
11921193
table="partial_state_rooms_servers",
@@ -1197,7 +1198,9 @@ def _clear_partial_state_room_txn(txn: LoggingTransaction, room_id: str) -> None
11971198
table="partial_state_rooms",
11981199
keyvalues={"room_id": room_id},
11991200
)
1201+
self._invalidate_cache_and_stream(txn, self.is_partial_state_room, (room_id,))
12001202

1203+
@cached()
12011204
async def is_partial_state_room(self, room_id: str) -> bool:
12021205
"""Checks if this room has partial state.
12031206
@@ -1771,9 +1774,8 @@ async def store_partial_state_room(
17711774
servers,
17721775
)
17731776

1774-
@staticmethod
17751777
def _store_partial_state_room_txn(
1776-
txn: LoggingTransaction, room_id: str, servers: Collection[str]
1778+
self, txn: LoggingTransaction, room_id: str, servers: Collection[str]
17771779
) -> None:
17781780
DatabasePool.simple_insert_txn(
17791781
txn,
@@ -1788,6 +1790,7 @@ def _store_partial_state_room_txn(
17881790
keys=("room_id", "server_name"),
17891791
values=((room_id, s) for s in servers),
17901792
)
1793+
self._invalidate_cache_and_stream(txn, self.is_partial_state_room, (room_id,))
17911794

17921795
async def maybe_store_room_on_outlier_membership(
17931796
self, room_id: str, room_version: RoomVersion

0 commit comments

Comments
 (0)