Limit filter to limit/2 for before/after events on /context (#3332)

Part of https://github.com/matrix-org/dendrite/issues/3224
This commit is contained in:
Till 2024-02-20 08:38:51 +01:00 committed by GitHub
parent ecb7b383e9
commit 8f944f6434
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 1 deletions

View File

@ -110,6 +110,7 @@ func Context(
} }
stateFilter := synctypes.StateFilter{ stateFilter := synctypes.StateFilter{
Limit: filter.Limit,
NotSenders: filter.NotSenders, NotSenders: filter.NotSenders,
NotTypes: filter.NotTypes, NotTypes: filter.NotTypes,
Senders: filter.Senders, Senders: filter.Senders,
@ -157,6 +158,11 @@ func Context(
} }
} }
// Limit is split up for before/after events
if filter.Limit > 1 {
filter.Limit = filter.Limit / 2
}
eventsBefore, err := snapshot.SelectContextBeforeEvent(ctx, id, roomID, filter) eventsBefore, err := snapshot.SelectContextBeforeEvent(ctx, id, roomID, filter)
if err != nil && err != sql.ErrNoRows { if err != nil && err != sql.ErrNoRows {
logrus.WithError(err).Error("unable to fetch before events") logrus.WithError(err).Error("unable to fetch before events")

View File

@ -1136,7 +1136,7 @@ func testContext(t *testing.T, dbType test.DBType) {
}, },
{ {
name: "events are not limited", name: "events are not limited",
wantBeforeLength: 7, wantBeforeLength: 5,
}, },
{ {
name: "all events are limited", name: "all events are limited",