Add fast path for replication events stream fetch (#16580)

We can bail early if the from token is greater than or equal to the
current token.
1.103.0-whithout-watcha
Erik Johnston 1 year ago committed by GitHub
parent fdce83ee60
commit 408c13801a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      changelog.d/16580.bugfix
  2. 6
      synapse/replication/tcp/streams/events.py

@ -0,0 +1 @@
Fix a long-standing, exceedingly rare edge case where the first event persisted by a new event persister worker might not be sent down `/sync`.

@ -157,6 +157,12 @@ class EventsStream(_StreamFromIdGen):
current_token: Token, current_token: Token,
target_row_count: int, target_row_count: int,
) -> StreamUpdateResult: ) -> StreamUpdateResult:
# The events stream cannot be "reset", so its safe to return early if
# the from token is larger than the current token (the DB query will
# trivially return 0 rows anyway).
if from_token >= current_token:
return [], current_token, False
# the events stream merges together three separate sources: # the events stream merges together three separate sources:
# * new events # * new events
# * current_state changes # * current_state changes

Loading…
Cancel
Save