This repository has been archived by the owner on Mar 26, 2024. It is now read-only.
Update all stream IDs after processing replication rows (#14723) #52
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-picking matrix-org#14723 from upstream. matrix-org#14723.
This creates a new store method,
process_replication_position
that is called afterprocess_replication_rows
. By moving stream ID advances here this guarantees any relevant cache invalidations will have been applied before the stream is advanced.This avoids race conditions where Python switches between threads mid way through processing the
process_replication_rows
method where stream IDs may be advanced before caches are invalidated due to class resolution ordering.See this comment/issue for further discussion:
matrix-org#14158 (comment)
Conflicts:
synapse/storage/databases/main/devices.py
synapse/storage/databases/main/events_worker.py