diff --git a/roomserver/state/state.go b/roomserver/state/state.go index 6c4e4b860..4ef30380f 100644 --- a/roomserver/state/state.go +++ b/roomserver/state/state.go @@ -1027,7 +1027,7 @@ func (v *StateResolution) loadStateEvents( result := make([]*gomatrixserverlib.Event, 0, len(entries)) eventEntries := make([]types.StateEntry, 0, len(entries)) - eventNIDs := make([]types.EventNID, 0, len(entries)) + eventNIDs := make(types.EventNIDs, 0, len(entries)) for _, entry := range entries { if e, ok := v.events[entry.EventNID]; ok { result = append(result, e) @@ -1036,6 +1036,7 @@ func (v *StateResolution) loadStateEvents( eventNIDs = append(eventNIDs, entry.EventNID) } } + sort.Sort(eventNIDs) events, err := v.db.Events(ctx, eventNIDs) if err != nil { return nil, nil, err diff --git a/roomserver/storage/shared/storage.go b/roomserver/storage/shared/storage.go index fa97a50fc..abcd3403b 100644 --- a/roomserver/storage/shared/storage.go +++ b/roomserver/storage/shared/storage.go @@ -495,7 +495,7 @@ func (d *Database) events( results := make([]types.Event, 0, len(inputEventNIDs)) for _, nid := range inputEventNIDs { event, ok := events[nid] - if !ok { + if !ok || event == nil { panic("missing event") } results = append(results, types.Event{