Class: CanvasSync::Jobs::ForkGather
Class Method Summary
collapse
Instance Method Summary
collapse
#create_job_log, #report_checker_wait_time, #update_or_create_model
Class Method Details
.handle_branch_error(e, job_chain:, skip_invoke: false, **kwargs) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/canvas_sync/jobs/fork_gather.rb', line 24
def self.handle_branch_error(e, job_chain:, skip_invoke: false, **kwargs)
return nil unless job_chain&.[](:global_options)&.[](:fork_path).present?
duped_chain = CanvasSync.duplicate_chain(job_chain)
job_list = duped_chain[:jobs]
while job_list.count > 0
job_class_name = job_list[0][:job]
job_class = job_class_name.constantize
break if job_class <= CanvasSync::Jobs::ForkGather
job_list.shift
end
return nil unless job_list.present?
if skip_invoke
duped_chain
else
CanvasSync.invoke_next(duped_chain)
true
end
end
|
Instance Method Details
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/canvas_sync/jobs/fork_gather.rb', line 4
def perform(job_chain, options)
forked_job = self.class.forked_at_job(job_chain)
if forked_job.present?
forked_job.with_lock do
forked_job.fork_count -= 1
forked_job.save!
end
if forked_job.fork_count <= 0
(job_chain[:global_options][:fork_keys] || []).pop&.each do |k|
job_chain[:global_options].delete(k.to_sym)
end
CanvasSync.invoke_next(job_chain)
end
else
CanvasSync.invoke_next(job_chain)
end
end
|