Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Correctly handle the different cases
Browse files Browse the repository at this point in the history
  • Loading branch information
erikjohnston committed Oct 26, 2023
1 parent 6069348 commit 22b2cca
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions synapse/replication/tcp/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,13 +204,23 @@ async def _run_notifier_loop(self) -> None:
# The token has advanced but there is no data to
# send, so we send a `POSITION` to inform other
# workers of the updated position.

# We skip this for the `caches` stream as a) it
# generates a lot of traffic as every worker would
# echo each write, and b) nothing cares if a given
# worker's caches stream position lags.
#
# There are two reasons for this: 1) this instance
# requested a stream ID but didn't use it, or 2)
# this instance advanced its own stream position due
# to receiving notifications about other instances
# advancing their stream position.

# We skip sending `POSITION` for the `caches` stream
# for the second case as a) it generates a lot of
# traffic as every worker would echo each write, and
# b) nothing cares if a given worker's caches stream
# position lags.
if stream.NAME == CachesStream.NAME:
continue
# If there haven't been any writes since the
# `last_token` then we're in the second case.
if stream.minimal_local_current_token() <= last_token:
continue

# Note: `last_token` may not *actually* be the
# last token we sent out in a RDATA or POSITION.
Expand Down

0 comments on commit 22b2cca

Please sign in to comment.