Class: SolidQueue::ReadyExecution

Inherits:
Execution show all
Defined in:
lib/solid_queue_mongoid/models/classes.rb,
lib/solid_queue_mongoid/models/ready_execution.rb

Constant Summary

Constants inherited from Record

SolidQueue::Record::INDEX_HINTS

Class Method Summary collapse

Methods inherited from Execution

create_all_from_jobs, #discard, discard_all_from_jobs, discard_all_in_batches, type, #type

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

.aggregated_count_across(queue_list) ⇒ Object

Called by Worker#all_work_completed?.



29
30
31
# File 'lib/solid_queue_mongoid/models/ready_execution.rb', line 29

def aggregated_count_across(queue_list)
  QueueSelector.new(queue_list, self).scoped_relations.sum(&:count)
end

.claim(queue_list, limit, process_id) ⇒ Object

Primary entry point called by SolidQueue::Worker. Atomically claims up to limit executions from queue_list for process_id.



14
15
16
17
18
19
20
# File 'lib/solid_queue_mongoid/models/ready_execution.rb', line 14

def claim(queue_list, limit, process_id)
  QueueSelector.new(queue_list, self).scoped_relations.flat_map do |queue_relation|
    select_and_lock(queue_relation, process_id, limit).tap do |locked|
      limit -= locked.size
    end
  end
end

.claim_batch(limit, process:, queues: "*") ⇒ Object

Integration spec compatible wrapper:

claim_batch(limit, process:, queues:)


24
25
26
# File 'lib/solid_queue_mongoid/models/ready_execution.rb', line 24

def claim_batch(limit, process:, queues: "*")
  claim(queues, limit, process.id)
end