Module: SolidQueue::Job::ConcurrencyControls

Extended by:
ActiveSupport::Concern
Defined in:
lib/solid_queue_mongoid/models/job/concurrency_controls.rb

Instance Method Summary collapse

Instance Method Details

#blocked? ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/solid_queue_mongoid/models/job/concurrency_controls.rb', line 30

def blocked?
  blocked_execution.present?
end

#concurrency_duration ⇒ Object

Returns the concurrency duration from job_class (not stored in DB).



44
45
46
# File 'lib/solid_queue_mongoid/models/job/concurrency_controls.rb', line 44

def concurrency_duration
  job_class.respond_to?(:concurrency_duration) ? job_class.concurrency_duration : 5.minutes
end

#concurrency_limit ⇒ Object

Returns the concurrency limit: uses the stored field when set, otherwise delegates to job_class (AR-compatible behaviour).



36
37
38
39
40
41
# File 'lib/solid_queue_mongoid/models/job/concurrency_controls.rb', line 36

def concurrency_limit
  limit = read_attribute(:concurrency_limit)
  return limit if limit.present?

  job_class.respond_to?(:concurrency_limit) ? job_class.concurrency_limit : nil
end

#concurrency_limited? ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/solid_queue_mongoid/models/job/concurrency_controls.rb', line 26

def concurrency_limited?
  concurrency_key.present?
end

#unblock_next_blocked_job ⇒ Object



20
21
22
23
24
# File 'lib/solid_queue_mongoid/models/job/concurrency_controls.rb', line 20

def unblock_next_blocked_job
  return unless release_concurrency_lock

  release_next_blocked_job
end