Method: Semian::CircuitBreaker#acquire
- Defined in:
- lib/semian/circuit_breaker.rb
#acquire(resource = nil, &block) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/semian/circuit_breaker.rb', line 43 def acquire(resource = nil, &block) transition_to_half_open if transition_to_half_open? raise OpenCircuitError unless request_allowed? result = nil begin result = maybe_with_half_open_resource_timeout(resource, &block) rescue *@exceptions => error if !error.respond_to?(:marks_semian_circuits?) || error.marks_semian_circuits? mark_failed(error) end raise error else mark_success end result end |