-
Notifications
You must be signed in to change notification settings - Fork 27
/
characterize_job.rb
24 lines (20 loc) · 1.14 KB
/
characterize_job.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class CharacterizeJob < ActiveJob::Base
include CurationConcerns::Lockable
queue_as CurationConcerns.config.ingest_queue_name
# @param [FileSet] file_set
# @param [String] file_id identifier for a Hydra::PCDM::File
# @param [String, NilClass] filepath the cached file within the CurationConcerns.config.working_path
def perform(file_set, file_id, filepath = nil)
filename = CurationConcerns::WorkingDirectory.find_or_retrieve(file_id, file_set.id, filepath)
raise LoadError, "#{file_set.class.characterization_proxy} was not found" unless file_set.characterization_proxy?
# Prevent other jobs from trying to modify the FileSet at the same time
acquire_lock_for(file_set.id) do
Hydra::Works::CharacterizationService.run(file_set.characterization_proxy, filename)
Rails.logger.debug "Ran characterization on #{file_set.characterization_proxy.id} (#{file_set.characterization_proxy.mime_type})"
file_set.characterization_proxy.save!
file_set.update_index
file_set.parent.in_collections.each(&:update_index) if file_set.parent
end
CreateDerivativesJob.perform_later(file_set, file_id, filename)
end
end