Use RoomInfo cache to find room version if possible in Events()

This commit is contained in:
Neil Alexander 2020-12-16 11:55:38 +00:00
parent cfee085119
commit e336d53f5e
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -330,14 +330,24 @@ func (d *Database) Events(
for _, n := range roomNIDs { for _, n := range roomNIDs {
uniqueRoomNIDs[n] = struct{}{} uniqueRoomNIDs[n] = struct{}{}
} }
roomNIDList := make([]types.RoomNID, 0, len(uniqueRoomNIDs)) roomVersions := make(map[types.RoomNID]gomatrixserverlib.RoomVersion)
fetchNIDList := make([]types.RoomNID, 0, len(uniqueRoomNIDs))
for n := range uniqueRoomNIDs { for n := range uniqueRoomNIDs {
roomNIDList = append(roomNIDList, n) if roomID, ok := d.Cache.GetRoomServerRoomID(n); ok {
if roomInfo, ok := d.Cache.GetRoomInfo(roomID); ok {
roomVersions[n] = roomInfo.RoomVersion
continue
}
}
fetchNIDList = append(fetchNIDList, n)
} }
roomVersions, err := d.RoomsTable.SelectRoomVersionsForRoomNIDs(ctx, roomNIDList) dbRoomVersions, err := d.RoomsTable.SelectRoomVersionsForRoomNIDs(ctx, fetchNIDList)
if err != nil { if err != nil {
return nil, err return nil, err
} }
for n, v := range dbRoomVersions {
roomVersions[n] = v
}
results := make([]types.Event, len(eventJSONs)) results := make([]types.Event, len(eventJSONs))
for i, eventJSON := range eventJSONs { for i, eventJSON := range eventJSONs {
result := &results[i] result := &results[i]