Class: Sidekiq::Failures::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/failures/middleware.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#msgObject

Returns the value of attribute msg.



5
6
7
# File 'lib/sidekiq/failures/middleware.rb', line 5

def msg
  @msg
end

Instance Method Details

#call(worker, msg, queue) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/sidekiq/failures/middleware.rb', line 7

def call(worker, msg, queue)
  self.msg = msg
  yield
rescue Sidekiq::Shutdown
  raise
rescue Exception => e
  raise e if skip_failure?

  msg['error_message'] = e.message
  msg['error_class'] = e.class.name
  msg['processor'] = identity
  msg['failed_at'] = Time.now.utc.to_f

  if msg['backtrace'] == true
    msg['error_backtrace'] = e.backtrace
  elsif msg['backtrace'] == false
    # do nothing
  elsif msg['backtrace'].to_i != 0
    msg['error_backtrace'] = e.backtrace[0..msg['backtrace'].to_i]
  end

  payload = Sidekiq.dump_json(msg)
  Sidekiq.redis do |conn|
    conn.zadd(LIST_KEY, Time.now.utc.to_f, payload)
    unless Sidekiq.failures_max_count == false
      conn.zremrangebyrank(LIST_KEY, 0, -(Sidekiq.failures_max_count + 1))
    end
  end

  raise e
end