FIX: Mark only uploads as verified/unverified in S3 inventory

This commit is contained in:
Penar Musaraj 2020-09-14 10:21:34 -04:00
parent 66eda8c9df
commit 06b4ca5dc7
No known key found for this signature in database
GPG Key ID: E390435D881FF0F7

View File

@ -71,22 +71,23 @@ class S3Inventory
.joins("LEFT JOIN #{table_name} inventory2 ON inventory2.url = #{model.table_name}.url") .joins("LEFT JOIN #{table_name} inventory2 ON inventory2.url = #{model.table_name}.url")
.where("inventory2.etag IS NOT NULL").pluck(:id) .where("inventory2.etag IS NOT NULL").pluck(:id)
# marking as verified/not verified if model == Upload
id_threshold_clause = model == Upload ? " AND model_table.id > #{model::SEEDED_ID_THRESHOLD}" : "" # marking as verified/not verified
DB.exec(<<~SQL, inventory_date DB.exec(<<~SQL, inventory_date
UPDATE #{model.table_name} UPDATE #{model.table_name}
SET verified = CASE when table_name_alias.etag IS NULL THEN false ELSE true END SET verified = CASE when table_name_alias.etag IS NULL THEN false ELSE true END
FROM #{model.table_name} AS model_table FROM #{model.table_name} AS model_table
LEFT JOIN #{table_name} AS table_name_alias ON model_table.etag = table_name_alias.etag LEFT JOIN #{table_name} AS table_name_alias ON model_table.etag = table_name_alias.etag
WHERE model_table.id = #{model.table_name}.id WHERE model_table.id = #{model.table_name}.id
AND model_table.updated_at < ? AND model_table.updated_at < ?
AND ( AND (
model_table.verified IS NULL OR model_table.verified IS NULL OR
model_table.verified <> CASE when table_name_alias.etag IS NULL THEN false ELSE true END model_table.verified <> CASE when table_name_alias.etag IS NULL THEN false ELSE true END
)
AND model_table.id > #{model::SEEDED_ID_THRESHOLD}
SQL
) )
#{id_threshold_clause} end
SQL
)
if (missing_count = missing_uploads.count) > 0 if (missing_count = missing_uploads.count) > 0
missing_uploads.select(:id, :url).find_each do |upload| missing_uploads.select(:id, :url).find_each do |upload|