Class: SolidQueue::Execution
- Inherits:
-
Record
- Object
- Record
- SolidQueue::Execution
show all
- Includes:
- JobAttributes
- Defined in:
- lib/solid_queue_mongoid/models/classes.rb,
lib/solid_queue_mongoid/models/execution.rb,
lib/solid_queue_mongoid/models/execution/dispatching.rb,
lib/solid_queue_mongoid/models/execution/job_attributes.rb
Defined Under Namespace
Modules: Dispatching, JobAttributes
Classes: UndiscardableError
Constant Summary
Constants inherited
from Record
Record::INDEX_HINTS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Record
create_or_find_by!, find_by!, index, index_specifications, index_specifications=, inherited, non_blocking_lock, supports_insert_conflict_target?, transaction, use_index
Class Method Details
.create_all_from_jobs(jobs) ⇒ Object
16
17
18
19
20
21
22
23
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 16
def create_all_from_jobs(jobs)
jobs.each do |job|
attrs = attributes_from_job(job).merge(job_id: job.id)
next if where(job_id: job.id).exists?
create_or_find_by!(attrs)
end
end
|
.discard_all_from_jobs(jobs) ⇒ Object
41
42
43
44
45
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 41
def discard_all_from_jobs(jobs)
job_ids = jobs.map(&:id)
discard_jobs(job_ids)
where(:job_id.in => job_ids).delete_all
end
|
.discard_all_in_batches(batch_size: 500) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 25
def discard_all_in_batches(batch_size: 500)
pending = count
discarded = 0
loop do
job_ids = limit(batch_size).order_by(job_id: :asc).pluck(:job_id)
break if job_ids.empty?
discarded = Job.where(:id.in => job_ids).delete_all
where(:job_id.in => job_ids).delete_all
pending -= discarded
break if pending <= 0 || discarded.zero?
end
end
|
.type ⇒ Object
12
13
14
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 12
def type
model_name.element.sub("_execution", "").to_sym
end
|
Instance Method Details
#discard ⇒ Object
58
59
60
61
62
63
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 58
def discard
SolidQueue.instrument(:discard, job_id: job_id, status: type) do
job.destroy
destroy
end
end
|
#type ⇒ Object
54
55
56
|
# File 'lib/solid_queue_mongoid/models/execution.rb', line 54
def type
self.class.type
end
|