mirror of
https://github.com/discourse/discourse.git
synced 2024-12-01 19:15:04 +08:00
4ef389bc04
Followup to 16c65a94
47 lines
1.2 KiB
Ruby
47 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 { |f| f.close; f.unlink }
|
|
end
|
|
end
|
|
|
|
def s3_helper
|
|
Discourse.store.s3_helper
|
|
end
|
|
|
|
def prepare_for_all_sites
|
|
inventory = S3Inventory.new(s3_helper, :upload)
|
|
@db_inventories = inventory.prepare_for_all_sites
|
|
@inventory_date = inventory.inventory_date
|
|
end
|
|
|
|
def execute(args)
|
|
return unless SiteSetting.enable_s3_inventory
|
|
require 's3_inventory'
|
|
|
|
if !@db_inventories && Rails.configuration.multisite && GlobalSetting.use_s3?
|
|
prepare_for_all_sites
|
|
end
|
|
|
|
if @db_inventories && preloaded_inventory_file = @db_inventories[RailsMultisite::ConnectionManagement.current_db]
|
|
S3Inventory.new(
|
|
s3_helper,
|
|
:upload,
|
|
preloaded_inventory_file: preloaded_inventory_file,
|
|
preloaded_inventory_date: @inventory_date
|
|
).backfill_etags_and_list_missing
|
|
else
|
|
S3Inventory.new(s3_helper, :upload).backfill_etags_and_list_missing
|
|
end
|
|
end
|
|
end
|
|
end
|