# Ignore: we have already decided not to reuse any completed
# job.
log_reuse_info { "job #{j.uuid} with output #{j.output} ignored, see above" }
+ elsif j.output.nil?
+ log_reuse_info { "job #{j.uuid} has nil output" }
+ elsif j.log.nil?
+ log_reuse_info { "job #{j.uuid} has nil log" }
+ elsif !Collection.readable_by(current_user).find_by_portable_data_hash(j.log)
+ log_reuse_info { "job #{j.uuid} log #{j.log} unavailable to user; continuing search" }
elsif Rails.configuration.reuse_job_if_outputs_differ
if Collection.readable_by(current_user).find_by_portable_data_hash(j.output)
log_reuse_info { "job #{j.uuid} with output #{j.output} is reusable; decision is final." }
return j
else
- # Ignore: keep locking for an incomplete job or one whose
+ # Ignore: keep looking for an incomplete job or one whose
# output is readable.
log_reuse_info { "job #{j.uuid} output #{j.output} unavailable to user; continuing search" }
end
state: Complete
script_parameters_digest: a5f03bbfb8ba88a2efe4a7852671605b
+previous_job_run_nil_log:
+ uuid: zzzzz-8i9sb-cjs4pklxxjykqq3
+ created_at: <%= 14.minute.ago.to_s(:db) %>
+ finished_at: <%= 13.minutes.ago.to_s(:db) %>
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+ repository: active/foo
+ script: hash
+ script_version: 4fe459abe02d9b365932b8f5dc419439ab4e2577
+ script_parameters:
+ input: fa7aeb5140e2848d39b416daeef4ffc5+45
+ an_integer: "3"
+ success: true
+ log: ~
+ output: ea10d51bcf88862dbcc36eb292017dfd+45
+ state: Complete
+ script_parameters_digest: 445702df4029b8a6e7075b451ff1256a
+
previous_ancient_job_run:
uuid: zzzzz-8i9sb-ahd7cie8jah9qui
created_at: <%= 366.days.ago.to_s(:db) %>
docker_image_locator: fa3c1a9cb6783f85f2ecda037e07b8c3+167
state: Complete
script_parameters_digest: a5f03bbfb8ba88a2efe4a7852671605b
+ log: ea10d51bcf88862dbcc36eb292017dfd+45
previous_ancient_docker_image_job_run:
uuid: zzzzz-8i9sb-t3b460aolxxuldl
output: ea10d51bcf88862dbcc36eb292017dfd+45
state: Complete
script_parameters_digest: a5f03bbfb8ba88a2efe4a7852671605b
+ log: ea10d51bcf88862dbcc36eb292017dfd+45
previous_job_run_no_output:
uuid: zzzzz-8i9sb-cjs4pklxxjykppp
assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
end
+ test "no reuse job with null log" do
+ post :create, {
+ job: {
+ script: "hash",
+ script_version: "4fe459abe02d9b365932b8f5dc419439ab4e2577",
+ repository: "active/foo",
+ script_parameters: {
+ input: 'fa7aeb5140e2848d39b416daeef4ffc5+45',
+ an_integer: '3'
+ }
+ },
+ find_or_create: true
+ }
+ assert_response :success
+ assert_not_nil assigns(:object)
+ new_job = JSON.parse(@response.body)
+ assert_not_equal 'zzzzz-8i9sb-cjs4pklxxjykqq3', new_job['uuid']
+ assert_equal '4fe459abe02d9b365932b8f5dc419439ab4e2577', new_job['script_version']
+ end
+
test "reuse job with symbolic script_version" do
post :create, {
job: {