mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-26 19:47:05 +03:00
Skip calculating unread push actions in /sync
when enable_push
is false. (#14980)
This commit is contained in:
parent
db2b105d69
commit
f09db5c991
3 changed files with 16 additions and 0 deletions
1
changelog.d/14980.misc
Normal file
1
changelog.d/14980.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Skip calculating unread push actions in /sync when enable_push is false.
|
|
@ -269,6 +269,8 @@ class SyncHandler:
|
||||||
self._state_storage_controller = self._storage_controllers.state
|
self._state_storage_controller = self._storage_controllers.state
|
||||||
self._device_handler = hs.get_device_handler()
|
self._device_handler = hs.get_device_handler()
|
||||||
|
|
||||||
|
self.should_calculate_push_rules = hs.config.push.enable_push
|
||||||
|
|
||||||
# TODO: flush cache entries on subsequent sync request.
|
# TODO: flush cache entries on subsequent sync request.
|
||||||
# Once we get the next /sync request (ie, one with the same access token
|
# Once we get the next /sync request (ie, one with the same access token
|
||||||
# that sets 'since' to 'next_batch'), we know that device won't need a
|
# that sets 'since' to 'next_batch'), we know that device won't need a
|
||||||
|
@ -1288,6 +1290,12 @@ class SyncHandler:
|
||||||
async def unread_notifs_for_room_id(
|
async def unread_notifs_for_room_id(
|
||||||
self, room_id: str, sync_config: SyncConfig
|
self, room_id: str, sync_config: SyncConfig
|
||||||
) -> RoomNotifCounts:
|
) -> RoomNotifCounts:
|
||||||
|
if not self.should_calculate_push_rules:
|
||||||
|
# If push rules have been universally disabled then we know we won't
|
||||||
|
# have any unread counts in the DB, so we may as well skip asking
|
||||||
|
# the DB.
|
||||||
|
return RoomNotifCounts.empty()
|
||||||
|
|
||||||
with Measure(self.clock, "unread_notifs_for_room_id"):
|
with Measure(self.clock, "unread_notifs_for_room_id"):
|
||||||
|
|
||||||
return await self.store.get_unread_event_push_actions_by_room_for_user(
|
return await self.store.get_unread_event_push_actions_by_room_for_user(
|
||||||
|
|
|
@ -203,11 +203,18 @@ class RoomNotifCounts:
|
||||||
# Map of thread ID to the notification counts.
|
# Map of thread ID to the notification counts.
|
||||||
threads: Dict[str, NotifCounts]
|
threads: Dict[str, NotifCounts]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def empty() -> "RoomNotifCounts":
|
||||||
|
return _EMPTY_ROOM_NOTIF_COUNTS
|
||||||
|
|
||||||
def __len__(self) -> int:
|
def __len__(self) -> int:
|
||||||
# To properly account for the amount of space in any caches.
|
# To properly account for the amount of space in any caches.
|
||||||
return len(self.threads) + 1
|
return len(self.threads) + 1
|
||||||
|
|
||||||
|
|
||||||
|
_EMPTY_ROOM_NOTIF_COUNTS = RoomNotifCounts(NotifCounts(), {})
|
||||||
|
|
||||||
|
|
||||||
def _serialize_action(
|
def _serialize_action(
|
||||||
actions: Collection[Union[Mapping, str]], is_highlight: bool
|
actions: Collection[Union[Mapping, str]], is_highlight: bool
|
||||||
) -> str:
|
) -> str:
|
||||||
|
|
Loading…
Reference in a new issue