From 0bd95d7b71ae71d801b0fbb643598eb0ccd1b8f5 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Sun, 10 Mar 2024 11:59:55 +0100 Subject: [PATCH] [bugfix] Don't error when populating MovedTo if account not found (#2741) * [bugfix] Don't error when populating MovedTo if account not found * test the thing --- internal/db/bundb/account.go | 5 +++-- internal/db/bundb/account_test.go | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go index d2c9c2f51a..bf618ef413 100644 --- a/internal/db/bundb/account.go +++ b/internal/db/bundb/account.go @@ -305,12 +305,13 @@ func (a *accountDB) PopulateAccount(ctx context.Context, account *gtsmodel.Accou } if account.MovedTo == nil && account.MovedToURI != "" { - // Account movedTo is not set, fetch from database. + // Account movedTo is not set, try to fetch from database, + // but only error on real errors since this field is optional. account.MovedTo, err = a.state.DB.GetAccountByURI( gtscontext.SetBarebones(ctx), account.MovedToURI, ) - if err != nil { + if err != nil && !errors.Is(err, db.ErrNoEntries) { errs.Appendf("error populating moved to account: %w", err) } } diff --git a/internal/db/bundb/account_test.go b/internal/db/bundb/account_test.go index f01964da8d..268c25c597 100644 --- a/internal/db/bundb/account_test.go +++ b/internal/db/bundb/account_test.go @@ -482,6 +482,17 @@ func (suite *AccountTestSuite) TestCountAccountPinnedNothingPinned() { suite.Equal(pinned, 0) // This account has nothing pinned. } +func (suite *AccountTestSuite) TestPopulateAccountWithUnknownMovedToURI() { + testAccount := >smodel.Account{} + *testAccount = *suite.testAccounts["local_account_1"] + + // Set test account MovedToURI to something we don't have in the database. + // We should not get an error when populating. + testAccount.MovedToURI = "https://unknown-instance.example.org/users/someone_we_dont_know" + err := suite.db.PopulateAccount(context.Background(), testAccount) + suite.NoError(err) +} + func TestAccountTestSuite(t *testing.T) { suite.Run(t, new(AccountTestSuite)) }