]> cat aescling's git repositories - mastodon.git/commitdiff
Fix mentions not being deleted efficiently (#15416)
authorThibG <thib@sitedethib.com>
Wed, 23 Dec 2020 15:43:11 +0000 (16:43 +0100)
committerGitHub <noreply@github.com>
Wed, 23 Dec 2020 15:43:11 +0000 (16:43 +0100)
As a regression from the recent optimizations, mentions were left untouched
until `account.destroy`, which would then delete them individually,
and executing queries to find and delete associated notifications, resulting
in a massive slowdown.

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
app/services/delete_account_service.rb

index 2bb533cfb68b07294dcf92cbaff1735e6ece18c3..f8154cc3ebabf1221edf77519aaa2cb6ef61c668 100644 (file)
@@ -142,6 +142,7 @@ class DeleteAccountService < BaseService
     purge_user!
     purge_profile!
     purge_statuses!
+    purge_mentions!
     purge_media_attachments!
     purge_polls!
     purge_generated_notifications!
@@ -159,6 +160,10 @@ class DeleteAccountService < BaseService
     end
   end
 
+  def purge_mentions!
+    @account.mentions.reorder(nil).where.not(status_id: reported_status_ids).in_batches.delete_all
+  end
+
   def purge_media_attachments!
     @account.media_attachments.reorder(nil).find_each do |media_attachment|
       next if keep_account_record? && reported_status_ids.include?(media_attachment.status_id)