Class: SidekiqUniqueJobs::Middleware::Server::UniqueJobs

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#redis_poolObject (readonly)

Returns the value of attribute redis_pool.



7
8
9
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 7

def redis_pool
  @redis_pool
end

#unlock_orderObject (readonly)

Returns the value of attribute unlock_order.



7
8
9
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 7

def unlock_order
  @unlock_order
end

Instance Method Details

#after_yield?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 44

def after_yield?
  unlock_order == :after_yield
end

#before_yield?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 40

def before_yield?
  unlock_order == :before_yield
end

#call(worker, item, queue, redis_pool = nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 9

def call(worker, item, queue, redis_pool = nil)
  @redis_pool = redis_pool

  set_unlock_order(worker.class)
  lock_key = payload_hash(item)
  unlocked = before_yield? ? unlock(lock_key).inspect : 0

  yield
ensure
  if after_yield? || !defined? unlocked || unlocked != 1
    unlock(lock_key)
  end
end

#default_unlock_orderObject



36
37
38
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 36

def default_unlock_order
  SidekiqUniqueJobs::Config.default_unlock_order
end

#set_unlock_order(klass) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 23

def set_unlock_order(klass)
  @unlock_order = if unlock_order_configured?(klass)
    klass.get_sidekiq_options['unique_unlock_order']
  else
    default_unlock_order
  end
end

#unlock_order_configured?(klass) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/sidekiq-unique-jobs/middleware/server/unique_jobs.rb', line 31

def unlock_order_configured?(klass)
  klass.respond_to?(:get_sidekiq_options) &&
    !klass.get_sidekiq_options['unique_unlock_order'].nil?
end