diff --git a/app/export.go b/app/export.go index 9939bb6fb9..8ce7d50cdd 100644 --- a/app/export.go +++ b/app/export.go @@ -5,12 +5,15 @@ package app import ( "encoding/json" + "fmt" "io" "net/http" "os" "path/filepath" "strings" + "github.com/mattermost/mattermost-server/store" + "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" "github.com/pkg/errors" @@ -410,6 +413,10 @@ func (a *App) BuildPostReactions(postId string) (*[]ReactionImportData, *model.A var user *model.User user, err = a.Srv.Store.User().Get(reaction.UserId) if err != nil { + if err.Id == store.MISSING_ACCOUNT_ERROR { // this is a valid case, the user that reacted might've been deleted by now + mlog.Info(fmt.Sprintf("Skipping reactions by user %v, since the entity doesn't exist anymore", reaction.UserId)) + continue + } return nil, err } reactionsOfPost = append(reactionsOfPost, *ImportReactionFromPost(user, reaction)) diff --git a/app/export_test.go b/app/export_test.go index 3bbdffd248..bd7faed3de 100644 --- a/app/export_test.go +++ b/app/export_test.go @@ -18,15 +18,22 @@ func TestReactionsOfPost(t *testing.T) { post := th.BasicPost post.HasReactions = true - + th.BasicUser2.DeleteAt = 1234 reactionObject := model.Reaction{ UserId: th.BasicUser.Id, PostId: post.Id, EmojiName: "emoji", CreateAt: model.GetMillis(), } + reactionObjectDeleted := model.Reaction{ + UserId: th.BasicUser2.Id, + PostId: post.Id, + EmojiName: "emoji", + CreateAt: model.GetMillis(), + } th.App.SaveReactionForPost(&reactionObject) + th.App.SaveReactionForPost(&reactionObjectDeleted) reactionsOfPost, err := th.App.BuildPostReactions(post.Id) require.Nil(t, err)