mirror of
https://github.com/1f349/dendrite.git
synced 2024-12-22 16:24:10 +00:00
Limit recent events when going backwards (#2840)
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:
parent
0782011f54
commit
69aff372f3
@ -216,6 +216,9 @@ func (p *PDUStreamProvider) IncrementalSync(
|
||||
return newPos
|
||||
}
|
||||
|
||||
// Limit the recent events to X when going backwards
|
||||
const recentEventBackwardsLimit = 100
|
||||
|
||||
// nolint:gocyclo
|
||||
func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||
ctx context.Context,
|
||||
@ -229,9 +232,15 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||
) (types.StreamPosition, error) {
|
||||
|
||||
originalLimit := eventFilter.Limit
|
||||
if r.Backwards {
|
||||
eventFilter.Limit = int(r.From - r.To)
|
||||
// If we're going backwards, grep at least X events, this is mostly to satisfy Sytest
|
||||
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(
|
||||
ctx, delta.RoomID, r,
|
||||
eventFilter, true, true,
|
||||
|
Loading…
Reference in New Issue
Block a user