Query rooms with ACLs instead of all rooms (#3338)
This now should actually speed up startup times. This is because _many_ rooms (like DMs) don't have room ACLs, this means that we had around 95% pointless DB queries. (as queried on d.m.org)
This commit is contained in:
parent
09f15a3d3f
commit
928c8c8c4a
14 changed files with 171 additions and 61 deletions
|
|
@ -2,6 +2,7 @@ package tables_test
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/matrix-org/dendrite/internal/sqlutil"
|
||||
|
|
@ -147,3 +148,38 @@ func Test_EventsTable(t *testing.T) {
|
|||
assert.Equal(t, int64(len(room.Events())+1), maxDepth)
|
||||
})
|
||||
}
|
||||
|
||||
func TestRoomsWithACL(t *testing.T) {
|
||||
|
||||
test.WithAllDatabases(t, func(t *testing.T, dbType test.DBType) {
|
||||
eventStateKeys, closeEventStateKeys := mustCreateEventTypesTable(t, dbType)
|
||||
defer closeEventStateKeys()
|
||||
|
||||
eventsTable, closeEventsTable := mustCreateEventsTable(t, dbType)
|
||||
defer closeEventsTable()
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
// insert the m.room.server_acl event type
|
||||
eventTypeNID, err := eventStateKeys.InsertEventTypeNID(ctx, nil, "m.room.server_acl")
|
||||
assert.Nil(t, err)
|
||||
|
||||
// Create ACL'd rooms
|
||||
var wantRoomNIDs []types.RoomNID
|
||||
for i := 0; i < 10; i++ {
|
||||
_, _, err = eventsTable.InsertEvent(ctx, nil, types.RoomNID(i), eventTypeNID, types.EmptyStateKeyNID, fmt.Sprintf("$1337+%d", i), nil, 0, false)
|
||||
assert.Nil(t, err)
|
||||
wantRoomNIDs = append(wantRoomNIDs, types.RoomNID(i))
|
||||
}
|
||||
|
||||
// Create non-ACL'd rooms (eventTypeNID+1)
|
||||
for i := 10; i < 20; i++ {
|
||||
_, _, err = eventsTable.InsertEvent(ctx, nil, types.RoomNID(i), eventTypeNID+1, types.EmptyStateKeyNID, fmt.Sprintf("$1337+%d", i), nil, 0, false)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
gotRoomNIDs, err := eventsTable.SelectRoomsWithEventTypeNID(ctx, nil, eventTypeNID)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, wantRoomNIDs, gotRoomNIDs)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue