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_tracking ⇒ Object
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_tracking ⇒ Object
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
|