diff options
author | Erik Johnston <erik@matrix.org> | 2022-07-04 16:02:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-04 16:02:21 +0100 |
commit | 723ce73d0253adddfb0264ff50ca4ebce0b70130 (patch) | |
tree | 30353f75bf9b3ab4652d72d19dd3ffc103789120 /synapse/storage | |
parent | matrix-synapse-ldap3: 0.2.0 -> 0.2.1 (#13156) (diff) | |
download | synapse-723ce73d0253adddfb0264ff50ca4ebce0b70130.tar.xz |
Fix stuck notification counts on small servers (#13168)
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/databases/main/event_push_actions.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/synapse/storage/databases/main/event_push_actions.py b/synapse/storage/databases/main/event_push_actions.py index 7d4754b3d3..505616e210 100644 --- a/synapse/storage/databases/main/event_push_actions.py +++ b/synapse/storage/databases/main/event_push_actions.py @@ -972,7 +972,12 @@ class EventPushActionsWorkerStore(ReceiptsWorkerStore, EventsWorkerStore, SQLBas stream_row = txn.fetchone() if stream_row: (offset_stream_ordering,) = stream_row - rotate_to_stream_ordering = offset_stream_ordering + + # We need to bound by the current token to ensure that we handle + # out-of-order writes correctly. + rotate_to_stream_ordering = min( + offset_stream_ordering, self._stream_id_gen.get_current_token() + ) caught_up = False else: rotate_to_stream_ordering = self._stream_id_gen.get_current_token() @@ -1004,7 +1009,7 @@ class EventPushActionsWorkerStore(ReceiptsWorkerStore, EventsWorkerStore, SQLBas SELECT user_id, room_id, count(*) as cnt, max(stream_ordering) as stream_ordering FROM event_push_actions - WHERE ? <= stream_ordering AND stream_ordering < ? + WHERE ? < stream_ordering AND stream_ordering <= ? AND %s = 1 GROUP BY user_id, room_id ) AS upd |