Module: DeadBro::DbConnectionSubscriber

Defined in:
lib/dead_bro/db_connection_subscriber.rb

Defined Under Namespace

Modules: CheckoutInstrumentation

Constant Summary collapse

WAIT_KEY =
:dead_bro_db_connection_wait_ms
COUNT_KEY =
:dead_bro_db_connection_checkouts

Class Method Summary collapse

Class Method Details

.install!Object



27
28
29
30
31
32
33
34
# File 'lib/dead_bro/db_connection_subscriber.rb', line 27

def self.install!
  return unless defined?(ActiveRecord::ConnectionAdapters::ConnectionPool)
  return if ActiveRecord::ConnectionAdapters::ConnectionPool.ancestors.include?(CheckoutInstrumentation)

  ActiveRecord::ConnectionAdapters::ConnectionPool.prepend(CheckoutInstrumentation)
rescue StandardError => e
  warn "[DeadBro] DbConnectionSubscriber install failed: #{e.class}: #{e.message}"
end

.start_request_trackingObject



36
37
38
39
# File 'lib/dead_bro/db_connection_subscriber.rb', line 36

def self.start_request_tracking
  Thread.current[WAIT_KEY]  = 0.0
  Thread.current[COUNT_KEY] = 0
end

.stop_request_trackingObject



41
42
43
44
45
46
47
# File 'lib/dead_bro/db_connection_subscriber.rb', line 41

def self.stop_request_tracking
  wait_ms   = Thread.current[WAIT_KEY]
  checkouts = Thread.current[COUNT_KEY]
  Thread.current[WAIT_KEY]  = nil
  Thread.current[COUNT_KEY] = nil
  { wait_ms: wait_ms&.round(2), checkouts: checkouts }
end