From ef4aa59fef9256812621fa425ddcc7d0d3756ee2 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 3 Aug 2022 13:42:41 +0100 Subject: [PATCH] Try again --- roomserver/internal/input/input_events.go | 4 +++- roomserver/internal/input/input_latest_events.go | 9 +++++++++ roomserver/storage/shared/room_updater.go | 5 ----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index 797341dcd..6640f6be1 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -233,7 +233,7 @@ func (r *Inputer) processRoomEvent( var err error softfail, err = helpers.CheckForSoftFail(ctx, roomInfo, r.DB, headered, input.StateEventIDs) if err != nil { - logger.WithError(err).Warnf("Event %s rejected by current room state", event.EventID()) + logger.WithError(err).Warnf("Event %s rejected by current room state (roominfo %+v)", event.EventID(), roomInfo) rejectionErr = fmt.Errorf("rejected by current room state: %w", err) } } @@ -337,10 +337,12 @@ func (r *Inputer) processRoomEvent( // Request the room info again — it's possible that the room has been // created by now if it didn't exist already. + logrus.Printf("Room info before: %+v", roomInfo) roomInfo, err = r.DB.RoomInfo(ctx, event.RoomID()) if err != nil { return fmt.Errorf("updater.RoomInfo: %w", err) } + logrus.Printf("Room info after: %+v", roomInfo) if roomInfo == nil { return fmt.Errorf("updater.RoomInfo missing for room %s", event.RoomID()) } diff --git a/roomserver/internal/input/input_latest_events.go b/roomserver/internal/input/input_latest_events.go index e3a573ed6..7446f9e6f 100644 --- a/roomserver/internal/input/input_latest_events.go +++ b/roomserver/internal/input/input_latest_events.go @@ -86,6 +86,15 @@ func (r *Inputer) updateLatestEvents( return fmt.Errorf("u.doUpdateLatestEvents: %w", err) } + // Since it's entirely possible that this types.RoomInfo came from the + // cache, we should make sure to update that entry so that the next run + // works from live data. + defer func() { + if succeeded { + u.roomInfo.Update(u.newStateNID, len(u.latest) == 0) + } + }() + succeeded = true return } diff --git a/roomserver/storage/shared/room_updater.go b/roomserver/storage/shared/room_updater.go index cd841ab4f..4497b58c4 100644 --- a/roomserver/storage/shared/room_updater.go +++ b/roomserver/storage/shared/room_updater.go @@ -229,11 +229,6 @@ func (u *RoomUpdater) SetLatestEvents( if err := u.d.RoomsTable.UpdateLatestEventNIDs(u.ctx, txn, roomNID, eventNIDs, lastEventNIDSent, currentStateSnapshotNID); err != nil { return fmt.Errorf("u.d.RoomsTable.updateLatestEventNIDs: %w", err) } - - // Since it's entirely possible that this types.RoomInfo came from the - // cache, we should make sure to update that entry so that the next run - // works from live data. - u.roomInfo.Update(currentStateSnapshotNID, len(eventNIDs) == 0) return nil }) }