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

Disable calculating unread counts unless the config flag is enabled. #13694

Merged
merged 4 commits into from
Sep 1, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/13694.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Avoid calculating the unstable unread counts from [MSC2654](https://github.com/matrix-org/matrix-spec-proposals/pull/2654) unless the results will be returned to the user.
clokep marked this conversation as resolved.
Show resolved Hide resolved
3 changes: 3 additions & 0 deletions synapse/config/experimental.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
self.msc3720_enabled: bool = experimental.get("msc3720_enabled", False)

# MSC2654: Unread counts
#
# Note that when this is enabled previously calculated push rules might
babolivier marked this conversation as resolved.
Show resolved Hide resolved
# be incorrect.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously if you enabled this flag the counts would be 100% correct for all previous message. This is no longer true and it will only be correct from the time the flag is enabled.

I think this is OK as the feature is still experimental.

self.msc2654_enabled: bool = experimental.get("msc2654_enabled", False)

# MSC2815 (allow room moderators to view redacted event content)
Expand Down
7 changes: 6 additions & 1 deletion synapse/push/bulk_push_rule_evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,12 @@ async def action_for_event_by_user(
# This can happen due to out of band memberships
return

count_as_unread = _should_count_as_unread(event, context)
# Disable counting as unread unless the experimental configuration is
# enabled, as it can cause additional (unwanted) rows to be added to the
# event_push_actions table.
count_as_unread = False
if self.hs.config.experimental.msc2654_enabled:
count_as_unread = _should_count_as_unread(event, context)

rules_by_user = await self._get_rules_for_event(event)
actions_by_user: Dict[str, Collection[Union[Mapping, str]]] = {}
Expand Down