Exception: DilisensePepClient::CircuitBreakerError

Inherits:
Error
  • Object
show all
Defined in:
lib/dilisense_pep_client/errors.rb

Overview

Circuit breaker errors (from our circuit breaker implementation)

Instance Attribute Summary collapse

Attributes inherited from Error

#context, #error_code, #request_id, #timestamp

Instance Method Summary collapse

Methods inherited from Error

#to_h

Constructor Details

#initialize(message, service_name:, circuit_state:, next_attempt_time: nil, **options) ⇒ CircuitBreakerError

Returns a new instance of CircuitBreakerError.



324
325
326
327
328
329
330
331
332
333
334
335
336
# File 'lib/dilisense_pep_client/errors.rb', line 324

def initialize(message, service_name:, circuit_state:, next_attempt_time: nil, **options)
  @service_name = service_name
  @circuit_state = circuit_state
  @next_attempt_time = next_attempt_time
  
  context = {
    service_name: service_name,
    circuit_state: circuit_state,
    next_attempt_time: next_attempt_time
  }.merge(options.fetch(:context, {}))
  
  super(message, error_code: "CIRCUIT_BREAKER_OPEN", context: context, **options)
end

Instance Attribute Details

#circuit_stateObject (readonly)

Returns the value of attribute circuit_state.



322
323
324
# File 'lib/dilisense_pep_client/errors.rb', line 322

def circuit_state
  @circuit_state
end

#next_attempt_timeObject (readonly)

Returns the value of attribute next_attempt_time.



322
323
324
# File 'lib/dilisense_pep_client/errors.rb', line 322

def next_attempt_time
  @next_attempt_time
end

#service_nameObject (readonly)

Returns the value of attribute service_name.



322
323
324
# File 'lib/dilisense_pep_client/errors.rb', line 322

def service_name
  @service_name
end

Instance Method Details

#retryable?Boolean

Returns:

  • (Boolean)


338
339
340
# File 'lib/dilisense_pep_client/errors.rb', line 338

def retryable?
  circuit_state == :half_open
end

#security_event?Boolean

Returns:

  • (Boolean)


342
343
344
# File 'lib/dilisense_pep_client/errors.rb', line 342

def security_event?
  true # Circuit breaker events are significant for monitoring
end