event cache: forward at most one read marker update per JoinedRoomUpdate
#3321
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.
This protects against the sliding sync proxy (or synapse) sending lots of duplicate fully read marker events for the same room in case of reset. This would lead to forwarding lots and lots of
RoomEventCacheUpdate
s to the timeline, cluttering the channel, and resulting in a lag. This lag would then clear the timeline, seemingly cause missing chunks from history.I've also lowered the size of the channel again, because we shouldn't need a buffer of 128 updates anymore.
#3312 is likely the long term fix (after a clear(), the timeline should retrieve all the memoized events from the event cache), but this should prevent the root cause of the spamming in the first place, getting us back to a safe state.