From e87681d43336273f93786f140a362c39a9b36ab4 Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 11 Jun 2025 11:38:10 +0200 Subject: [bugfix] process account delete synchronously to prevent OOM (#4260) # Description - updates account delete processing to handle side-effects synchronously to prevent OOM - updates account delete processing to check more often if account.IsLocal() for certain deletes / side-effects - ensures that mutes get removed from database on delete ## Checklist - [x] I/we have read the [GoToSocial contribution guidelines](https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/CONTRIBUTING.md). - [x] I/we have discussed the proposed changes already, either in an issue on the repository, or in the Matrix chat. - [x] I/we have not leveraged AI to create the proposed changes. - [x] I/we have performed a self-review of added code. - [x] I/we have written code that is legible and maintainable by others. - [x] I/we have commented the added code, particularly in hard-to-understand areas. - [ ] I/we have made any necessary changes to documentation. - [ ] I/we have added tests that cover new code. - [ ] I/we have run tests and they pass locally with the changes. - [x] I/we have run `go fmt ./...` and `golangci-lint run`. Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4260 Co-authored-by: kim Co-committed-by: kim --- internal/db/relationship.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'internal/db/relationship.go') diff --git a/internal/db/relationship.go b/internal/db/relationship.go index b63e911e6..c00b8f233 100644 --- a/internal/db/relationship.go +++ b/internal/db/relationship.go @@ -176,14 +176,20 @@ type Relationship interface { // GetAccountFollowRequestingIDs is like GetAccountFollowRequesting, but returns just IDs. GetAccountFollowRequestingIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) - // GetAccountBlocks returns all blocks originating from the given account, with given optional paging parameters. - GetAccountBlocks(ctx context.Context, accountID string, paging *paging.Page) ([]*gtsmodel.Block, error) + // GetAccountBlocking returns all blocks originating from the given account, with given optional paging parameters. + GetAccountBlocking(ctx context.Context, accountID string, paging *paging.Page) ([]*gtsmodel.Block, error) - // GetAccountBlockIDs is like GetAccountBlocks, but returns just IDs. - GetAccountBlockIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) + // GetAccountBlockingIDs is like GetAccountBlocking, but returns just IDs. + GetAccountBlockingIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) - // CountAccountBlocks counts the number of blocks owned by the given account. - CountAccountBlocks(ctx context.Context, accountID string) (int, error) + // GetAccountBlockedBy returns all blocks targeting the given account, with optional paging parameters. + GetAccountBlockedBy(ctx context.Context, accountID string, page *paging.Page) ([]*gtsmodel.Block, error) + + // GetAccountBlockedByIDs is like GetAccountBlockedBy, but returns just IDs. + GetAccountBlockedByIDs(ctx context.Context, accountID string, page *paging.Page) ([]string, error) + + // CountAccountBlocking counts the number of blocks owned by the given account. + CountAccountBlocking(ctx context.Context, accountID string) (int, error) // GetNote gets a private note from a source account on a target account, if it exists. GetNote(ctx context.Context, sourceAccountID string, targetAccountID string) (*gtsmodel.AccountNote, error) -- cgit v1.2.3