Class: LogBrew::Sidekiq::Instrumentation
- Inherits:
-
Object
- Object
- LogBrew::Sidekiq::Instrumentation
- Defined in:
- lib/logbrew/sidekiq.rb
Overview
App-owned Sidekiq registration and lifecycle state.
Class Method Summary collapse
Instance Method Summary collapse
- #disable ⇒ Object
- #enable ⇒ Object
-
#initialize(client:, transport:, max_retries:, on_capture_error:) ⇒ Instrumentation
constructor
A new instance of Instrumentation.
- #quiet ⇒ Object
- #register_client(config) ⇒ Object
- #register_server(config) ⇒ Object
- #shutdown ⇒ Object
- #unregister_client(config) ⇒ Object
- #unregister_server(config) ⇒ Object
Constructor Details
#initialize(client:, transport:, max_retries:, on_capture_error:) ⇒ Instrumentation
Returns a new instance of Instrumentation.
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/logbrew/sidekiq.rb', line 141 def initialize(client:, transport:, max_retries:, on_capture_error:) @client = client @transport = transport @max_retries = max_retries @on_capture_error = on_capture_error @owner_process_id = Process.pid @state_mutex = Mutex.new @state = :enabled @shutdown_mutex = Mutex.new @shutdown_response = nil @failure_mutex = Mutex.new @reported_failures = {} @registration_mutex = Mutex.new @registrations = {} end |
Class Method Details
.create(client:, transport: nil, max_retries: 25, on_capture_error: nil) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/logbrew/sidekiq.rb', line 117 def self.create(client:, transport: nil, max_retries: 25, on_capture_error: nil) unless client.is_a?(Client) raise SdkError.new("validation_error", "client must be a LogBrew::Client") end unless transport.nil? || transport.respond_to?(:send) raise SdkError.new("validation_error", "transport must respond to send") end unless max_retries.is_a?(Integer) && max_retries.between?(0, MAX_RETRY_COUNT) raise SdkError.new("validation_error", "max_retries must be a bounded non-negative integer") end unless on_capture_error.nil? || on_capture_error.respond_to?(:call) raise SdkError.new("validation_error", "on_capture_error must be callable") end new( client: client, transport: transport, max_retries: max_retries, on_capture_error: on_capture_error ) end |
Instance Method Details
#disable ⇒ Object
177 178 179 |
# File 'lib/logbrew/sidekiq.rb', line 177 def disable update_state(:disabled) end |
#enable ⇒ Object
173 174 175 |
# File 'lib/logbrew/sidekiq.rb', line 173 def enable update_state(:enabled) end |
#quiet ⇒ Object
181 182 183 |
# File 'lib/logbrew/sidekiq.rb', line 181 def quiet update_state(:quiet) end |
#register_client(config) ⇒ Object
157 158 159 |
# File 'lib/logbrew/sidekiq.rb', line 157 def register_client(config) register(config, :client_middleware, ClientMiddleware) end |
#register_server(config) ⇒ Object
165 166 167 |
# File 'lib/logbrew/sidekiq.rb', line 165 def register_server(config) register(config, :server_middleware, ServerMiddleware) end |
#shutdown ⇒ Object
185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/logbrew/sidekiq.rb', line 185 def shutdown assert_process_ownership! @shutdown_mutex.synchronize do return @shutdown_response unless @shutdown_response.nil? quiet response = @transport.nil? ? @client.shutdown : @client.shutdown(@transport) @state_mutex.synchronize { @state = :closed } @shutdown_response = response end end |
#unregister_client(config) ⇒ Object
161 162 163 |
# File 'lib/logbrew/sidekiq.rb', line 161 def unregister_client(config) unregister(config, :client_middleware, ClientMiddleware) end |
#unregister_server(config) ⇒ Object
169 170 171 |
# File 'lib/logbrew/sidekiq.rb', line 169 def unregister_server(config) unregister(config, :server_middleware, ServerMiddleware) end |