• Nick Thomas's avatar
    Fix timeouts when destroying a project with many notes · 3e5a944e
    Nick Thomas authored
    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
    3e5a944e
project_spec.rb 217 KB