diff --git a/roomserver/internal/perform/perform_leave.go b/roomserver/internal/perform/perform_leave.go index acab25a42..b10fb70a1 100644 --- a/roomserver/internal/perform/perform_leave.go +++ b/roomserver/internal/perform/perform_leave.go @@ -228,10 +228,13 @@ func (r *Leaver) performFederatedRejectInvite( util.GetLogger(ctx).WithError(err).Errorf("failed to get MembershipUpdater, still retiring invite event") } if updater != nil { - if _, err := updater.SetToLeave(req.UserID, eventID); err != nil { + if _, err = updater.SetToLeave(req.UserID, eventID); err != nil { util.GetLogger(ctx).WithError(err).Errorf("failed to set membership to leave, still retiring invite event") + if err = updater.Rollback(); err != nil { + util.GetLogger(ctx).WithError(err).Errorf("failed to rollback membership leave, still retiring invite event") + } } else { - if err := updater.Commit(); err != nil { + if err = updater.Commit(); err != nil { util.GetLogger(ctx).WithError(err).Errorf("failed to commit membership update, still retiring invite event") } }