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.
This commit is contained in:
Erik Johnston 2023-10-30 14:47:57 +00:00 committed by GitHub
parent fdce83ee60
commit 408c13801a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 0 deletions

1
changelog.d/16580.bugfix Normal file
View File

@ -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`.

View File

@ -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