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.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/logbrew/sidekiq.rb', line 139 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
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/logbrew/sidekiq.rb', line 115 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
175 176 177 |
# File 'lib/logbrew/sidekiq.rb', line 175 def disable update_state(:disabled) end |
#enable ⇒ Object
171 172 173 |
# File 'lib/logbrew/sidekiq.rb', line 171 def enable update_state(:enabled) end |
#quiet ⇒ Object
179 180 181 |
# File 'lib/logbrew/sidekiq.rb', line 179 def quiet update_state(:quiet) end |
#register_client(config) ⇒ Object
155 156 157 |
# File 'lib/logbrew/sidekiq.rb', line 155 def register_client(config) register(config, :client_middleware, ClientMiddleware) end |
#register_server(config) ⇒ Object
163 164 165 |
# File 'lib/logbrew/sidekiq.rb', line 163 def register_server(config) register(config, :server_middleware, ServerMiddleware) end |
#shutdown ⇒ Object
183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/logbrew/sidekiq.rb', line 183 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
159 160 161 |
# File 'lib/logbrew/sidekiq.rb', line 159 def unregister_client(config) unregister(config, :client_middleware, ClientMiddleware) end |
#unregister_server(config) ⇒ Object
167 168 169 |
# File 'lib/logbrew/sidekiq.rb', line 167 def unregister_server(config) unregister(config, :server_middleware, ServerMiddleware) end |