Class: Sidekiq::LockableJob::Middleware::Server::HandleLockedBy
- Inherits:
-
Object
- Object
- Sidekiq::LockableJob::Middleware::Server::HandleLockedBy
- Defined in:
- lib/sidekiq/lockable_job/middleware/server/handle_locked_by.rb
Instance Method Summary collapse
Instance Method Details
#call(worker, job, queue) { ... } ⇒ Void
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/sidekiq/lockable_job/middleware/server/handle_locked_by.rb', line 14 def call(worker, job, queue) worker_klass = worker.class if worker_klass.respond_to?(:lockable_job_locked_by_keys) keys = worker_klass.send(:lockable_job_locked_by_keys, job['args']) keys = [keys] unless keys.nil? || keys.is_a?(Array) locked = worker_klass.current_lockable_job_lock_service.handle_locked_by(keys, worker_instance: worker, job: job) # LockableJobService && MultiLockService raise if job is lock # but a CustomLockService could decide to re-enqueued the job # if the service return true, it mean the job is lock and we skip it's processing (don't yield) return if locked end yield end |