Fix timeouts when destroying a project with many notes
Generally, we like to use foreign key associations to destroy dependent records. Where this is possible, it's faster and uses fewer resources than doing it in GitLab. In 028db84c , the notes association was converted from `dependent: :destroy` to using foreign keys. However, when destroying a specific project with > 60K notes, we're experiencing statement timeouts in the staging environment. Additionally, notes have a deprecated `attachments` uploader that requires Ruby intervention to avoid orphaning files on disk - there are at least some notes on GitLab.com that still use this deprecated uploader. Since 2017, we've introduced the BatchDestroyDependentAssociations concern, which takes care of processing large numbers of dependent records in batches. Re-introducing `dependent: :destroy` on notes will automatically make use of this code. Changelog: fixed
Showing
Please register or sign in to comment