discourse/app/jobs/regular/backup_chunks_merger.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
1.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2014-02-21 19:41:01 -05:00
module Jobs
class BackupChunksMerger < ::Jobs::Base
2018-01-31 06:05:06 -05:00
sidekiq_options queue: "critical", retry: false
2014-02-21 19:41:01 -05:00
def execute(args)
filename = args[:filename]
identifier = args[:identifier]
chunks = args[:chunks].to_i
raise Discourse::InvalidParameters.new(:filename) if filename.blank?
2014-02-21 19:41:01 -05:00
raise Discourse::InvalidParameters.new(:identifier) if identifier.blank?
raise Discourse::InvalidParameters.new(:chunks) if chunks <= 0
2014-02-21 19:41:01 -05:00
backup_path = "#{BackupRestore::LocalBackupStore.base_directory}/#{filename}"
tmp_backup_path = "#{backup_path}.tmp"
2014-05-27 16:14:37 -04:00
# path to tmp directory
tmp_directory =
File.dirname(BackupRestore::LocalBackupStore.chunk_path(identifier, filename, 0))
2014-05-27 16:14:37 -04:00
# merge all chunks
HandleChunkUpload.merge_chunks(
chunks,
upload_path: backup_path,
tmp_upload_path: tmp_backup_path,
identifier: identifier,
filename: filename,
tmp_directory: tmp_directory,
)
2018-01-31 06:05:06 -05:00
# push an updated list to the clients
store = BackupRestore::BackupStore.create
data =
ActiveModel::ArraySerializer.new(store.files, each_serializer: BackupFileSerializer).as_json
MessageBus.publish("/admin/backups", data, group_ids: [Group::AUTO_GROUPS[:staff]])
2014-02-21 19:41:01 -05:00
end
end
end