Exception: BrainzLab::Utilities::CircuitBreaker::CircuitOpenError

Inherits:
ServiceUnavailableError show all
Defined in:
lib/brainzlab/utilities/circuit_breaker.rb

Overview

Error raised when circuit is open Inherits from BrainzLab::ServiceUnavailableError for structured error handling

Constant Summary

Constants inherited from Error

Error::DOCS_BASE_URL

Instance Attribute Summary collapse

Attributes inherited from ServiceUnavailableError

#service_name

Attributes inherited from Error

#code, #context, #docs_url, #hint

Instance Method Summary collapse

Methods inherited from Error

#as_json, #detailed_message, #inspect, #to_h, #to_s

Constructor Details

#initialize(circuit_name, failure_count: nil, last_failure_at: nil) ⇒ CircuitOpenError

Returns a new instance of CircuitOpenError.



270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
# File 'lib/brainzlab/utilities/circuit_breaker.rb', line 270

def initialize(circuit_name, failure_count: nil, last_failure_at: nil)
  @circuit_name = circuit_name
  @failure_count = failure_count
  @last_failure_at = last_failure_at

  super(
    "Circuit '#{circuit_name}' is open",
    hint: 'The circuit breaker has tripped due to repeated failures. The service will be retried automatically after the recovery timeout.',
    code: 'circuit_open',
    service_name: circuit_name,
    context: {
      circuit_name: circuit_name,
      failure_count: failure_count,
      last_failure_at: last_failure_at&.iso8601
    }.compact
  )
end

Instance Attribute Details

#circuit_nameObject (readonly)

Returns the value of attribute circuit_name.



268
269
270
# File 'lib/brainzlab/utilities/circuit_breaker.rb', line 268

def circuit_name
  @circuit_name
end

#failure_countObject (readonly)

Returns the value of attribute failure_count.



268
269
270
# File 'lib/brainzlab/utilities/circuit_breaker.rb', line 268

def failure_count
  @failure_count
end

#last_failure_atObject (readonly)

Returns the value of attribute last_failure_at.



268
269
270
# File 'lib/brainzlab/utilities/circuit_breaker.rb', line 268

def last_failure_at
  @last_failure_at
end