Skip to content

Commit

Permalink
Never return negative bump stamp (#17748)
Browse files Browse the repository at this point in the history
Fixes #17737
  • Loading branch information
erikjohnston committed Sep 24, 2024
1 parent 5173741 commit aad26cb
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/17748.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix bug in sliding sync where the server would incorrectly return a negative bump stamp, which caused Element X apps to stop syncing.
16 changes: 16 additions & 0 deletions synapse/handlers/sliding_sync/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1063,6 +1063,22 @@ async def get_room_sync_data(
if new_bump_stamp is not None:
bump_stamp = new_bump_stamp

if bump_stamp < 0:
# We never want to send down negative stream orderings, as you can't
# sensibly compare positive and negative stream orderings (they have
# different meanings).
#
# A negative bump stamp here can only happen if the stream ordering
# of the membership event is negative (and there are no further bump
# stamps), which can happen if the server leaves and deletes a room,
# and then rejoins it.
#
# To deal with this, we just set the bump stamp to zero, which will
# shove this room to the bottom of the list. This is OK as the
# moment a new message happens in the room it will get put into a
# sensible order again.
bump_stamp = 0

unstable_expanded_timeline = False
prev_room_sync_config = previous_connection_state.room_configs.get(room_id)
# Record the `room_sync_config` if we're `ignore_timeline_bound` (which means
Expand Down

0 comments on commit aad26cb

Please sign in to comment.