Deleted `vulnerability_remediations` records leave behind `uploads` records
Problem
It appears on staging-ref.gitlab.com that vulnerability_remediations
records were deleted, but there are uploads
records still referencing them. Geo surfaces these affected uploads
records during periodic verification of data. Errors are generated when attempting to access the uploaded files.
Customers who use Geo for disaster recovery reasons must spend time investigating potentially missing or corrupted data to determine if it is a problem.
Details
irb(main):001:0> Upload.verification_failed.count
=> 725
irb(main):002:0> Upload.verification_failed.first
=>
#<Upload:0x00007b78ec5f3580
id: 7,
size: 13908,
path: "vulnerabilities/remediation/file/1/99974c3ec64a98cf7c644609e6d340f4071764e67654494035460cb9bf9d6ef4.diff",
checksum: nil,
model_id: 1,
model_type: "Vulnerabilities::Remediation",
uploader: "AttachmentUploader",
created_at: Wed, 13 Mar 2024 18:58:18.840841000 UTC +00:00,
store: 2,
mount_point: "file",
secret: nil,
verification_checksum: nil>
irb(main):003:0> Upload.verification_failed.first.upload_state
=>
#<Geo::UploadState:0x00007b78ec445170
verification_started_at: Mon, 20 May 2024 21:55:09.993793000 UTC +00:00,
verification_retry_at: Mon, 20 May 2024 22:55:54.341370000 UTC +00:00,
verified_at: Mon, 20 May 2024 21:55:10.341422000 UTC +00:00,
upload_id: 7,
verification_state: 3,
verification_retry_count: 1441,
verification_checksum: nil,
verification_failure: "Error during verification: undefined method `underscore' for NilClass:Class\n\n File.join(model.class.underscore, mounted_as.to_s, model.id.to_s)\n ^^^^^^^^^^^">
irb(main):004:0> Upload.verification_failed.first.model
=> nil
irb(main):007:0> Upload.verification_failed.select { |u| u.model.nil? }.size
=> 725
irb(main):010:0> Upload.verification_failed.group(:model_type).count
=> {"Vulnerabilities::Remediation"=>725}
irb(main):011:0> Upload.verification_failed.order(:created_at).first.created_at
=> Wed, 13 Mar 2024 18:58:18.840841000 UTC +00:00
irb(main):012:0> Upload.verification_failed.order(:created_at).last.created_at
=> Mon, 13 May 2024 22:25:30.483615000 UTC +00:00
References
Edited by Michael Kozono