diff options
author | Erik Johnston <erik@matrix.org> | 2022-05-16 12:06:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-16 12:06:56 +0100 |
commit | 8689230a55cf1bb8e959e993fd4b28dcee0716da (patch) | |
tree | e842602dc5e0b6b86c8fc98f867eef97994b76b7 | |
parent | other fixes (diff) | |
download | synapse-8689230a55cf1bb8e959e993fd4b28dcee0716da.tar.xz |
Fix bug /sync returning 404 (#12729)
* Fix bug /sync returning 404 Fixes #12571
-rw-r--r-- | changelog.d/12729.bugfix | 1 | ||||
-rw-r--r-- | synapse/storage/databases/main/stream.py | 19 |
2 files changed, 12 insertions, 8 deletions
diff --git a/changelog.d/12729.bugfix b/changelog.d/12729.bugfix new file mode 100644 index 0000000000..07aae23ac0 --- /dev/null +++ b/changelog.d/12729.bugfix @@ -0,0 +1 @@ +Fix a bug introduced in Synapse 1.58.0 where `/sync` would fail if the most recent event in a room was rejected. diff --git a/synapse/storage/databases/main/stream.py b/synapse/storage/databases/main/stream.py index 793e906630..3c3137fe64 100644 --- a/synapse/storage/databases/main/stream.py +++ b/synapse/storage/databases/main/stream.py @@ -743,14 +743,17 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore): """ def _f(txn: LoggingTransaction) -> Optional[Tuple[int, int, str]]: - sql = ( - "SELECT stream_ordering, topological_ordering, event_id" - " FROM events" - " WHERE room_id = ? AND stream_ordering <= ?" - " AND NOT outlier" - " ORDER BY stream_ordering DESC" - " LIMIT 1" - ) + sql = """ + SELECT stream_ordering, topological_ordering, event_id + FROM events + LEFT JOIN rejections USING (event_id) + WHERE room_id = ? + AND stream_ordering <= ? + AND NOT outlier + AND rejections.reason IS NULL + ORDER BY stream_ordering DESC + LIMIT 1 + """ txn.execute(sql, (room_id, stream_ordering)) return cast(Optional[Tuple[int, int, str]], txn.fetchone()) |