1
0
Fork 0
mirror of https://github.com/matrix-org/dendrite.git synced 2025-04-22 08:44:28 -05:00

Limit recent events when going backwards ()

If we're going backwards, we were selecting potentially thousands of
events, which in turn were fed to history visibility checks, resulting
in bad sync performance.
This commit is contained in:
Till 2022-10-28 13:40:51 +02:00 committed by GitHub
parent 0782011f54
commit 69aff372f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -216,6 +216,9 @@ func (p *PDUStreamProvider) IncrementalSync(
return newPos return newPos
} }
// Limit the recent events to X when going backwards
const recentEventBackwardsLimit = 100
// nolint:gocyclo // nolint:gocyclo
func (p *PDUStreamProvider) addRoomDeltaToResponse( func (p *PDUStreamProvider) addRoomDeltaToResponse(
ctx context.Context, ctx context.Context,
@ -229,9 +232,15 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
) (types.StreamPosition, error) { ) (types.StreamPosition, error) {
originalLimit := eventFilter.Limit originalLimit := eventFilter.Limit
if r.Backwards { // If we're going backwards, grep at least X events, this is mostly to satisfy Sytest
eventFilter.Limit = int(r.From - r.To) if r.Backwards && originalLimit < recentEventBackwardsLimit {
eventFilter.Limit = recentEventBackwardsLimit // TODO: Figure out a better way
diff := r.From - r.To
if diff > 0 && diff < recentEventBackwardsLimit {
eventFilter.Limit = int(diff)
} }
}
recentStreamEvents, limited, err := snapshot.RecentEvents( recentStreamEvents, limited, err := snapshot.RecentEvents(
ctx, delta.RoomID, r, ctx, delta.RoomID, r,
eventFilter, true, true, eventFilter, true, true,