forked from cybrespace/mastodon
		
	Fix mentions not being deleted efficiently (#15416)
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>
This commit is contained in:
		
							parent
							
								
									473abc35a1
								
							
						
					
					
						commit
						de57efd055
					
				
					 1 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue