Module: Sidekiq::Sync::ClassMethods

Defined in:
lib/sidekiq/sync/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#perform_sync(*args) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/sidekiq/sync/class_methods.rb', line 4

def perform_sync(*args)
  real_args = []
  options = Sidekiq::Sync::Options.new
  for arg in args
    if arg.is_a? Sidekiq::Sync::Options
      options = arg
    else
      real_args << arg
    end
  end

  return_channel = "sidekiq-sync:#{SecureRandom::uuid}"

  self.perform_async(return_channel, *real_args)
#        queue_or_nil_if_timeout, value = Sidekiq::Sync.redis.blpop return_channel, timeout: options.timeout
  queue_or_nil_if_timeout, value = Sidekiq.redis do |r|
    r.blpop return_channel, timeout: options.timeout
  end

  unless queue_or_nil_if_timeout
    raise Sidekiq::Sync::TimeoutError if options.raise
  end

  value
end