Class: ActiveRecordPostgresRecovery::SidekiqMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record_postgres_recovery/sidekiq_middleware.rb

Constant Summary collapse

SOURCE =
'Sidekiq'

Instance Method Summary collapse

Instance Method Details

#call(worker, job, queue) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/active_record_postgres_recovery/sidekiq_middleware.rb', line 9

def call(worker, job, queue)
  yield
rescue StandardError => e
  raise unless ActiveRecordPostgresRecovery.configuration.enabled?
  raise unless Handler.db_connectivity_error?(e)

  clear_action = if Handler.read_only_transaction_error?(e)
                   Handler.clear_failover_connections!
                 else
                   Handler.clear_all_connections!
                 end
  Handler.report_attempted_recovery(
    context: sidekiq_context(worker, job, queue),
    error: e,
    source: SOURCE,
    clear_action: clear_action
  )
  raise
end