discourse/app/jobs/scheduled/ensure_s3_uploads_existence.rb
2024-06-10 16:26:39 +08:00

46 lines
1.2 KiB
Ruby

# frozen_string_literal: true
module Jobs
class EnsureS3UploadsExistence < ::Jobs::Scheduled
every 1.day
def perform(*args)
super
ensure
if @db_inventories
@db_inventories.values.each do |f|
f.close
f.unlink
end
end
end
def prepare_for_all_sites(s3_inventory_bucket)
inventory = S3Inventory.new(:upload, s3_inventory_bucket:)
@db_inventories = inventory.prepare_for_all_sites
@inventory_date = inventory.inventory_date
end
def execute(args)
return if (s3_inventory_bucket = SiteSetting.s3_inventory_bucket).blank?
if !@db_inventories && Rails.configuration.multisite && GlobalSetting.use_s3?
prepare_for_all_sites(s3_inventory_bucket)
end
if @db_inventories &&
preloaded_inventory_file =
@db_inventories[RailsMultisite::ConnectionManagement.current_db]
S3Inventory.new(
:upload,
s3_inventory_bucket:,
preloaded_inventory_file: preloaded_inventory_file,
preloaded_inventory_date: @inventory_date,
).backfill_etags_and_list_missing
else
S3Inventory.new(:upload, s3_inventory_bucket:).backfill_etags_and_list_missing
end
end
end
end