Class: RailsInformant::Notifiers::CircuitBreaker

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_informant/notifiers/circuit_breaker.rb

Constant Summary collapse

FAILURE_THRESHOLD =
5
RESET_TIMEOUT =
10.minutes

Class Method Summary collapse

Class Method Details

.open?Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
# File 'lib/rails_informant/notifiers/circuit_breaker.rb', line 10

def open?
  MUTEX.synchronize do
    return false if failure_count < FAILURE_THRESHOLD
    last_failure_at > RESET_TIMEOUT.ago
  end
end

.record_failureObject



17
18
19
20
21
22
# File 'lib/rails_informant/notifiers/circuit_breaker.rb', line 17

def record_failure
  MUTEX.synchronize do
    @failure_count = failure_count + 1
    @last_failure_at = Time.current
  end
end

.record_successObject



24
25
26
27
28
29
# File 'lib/rails_informant/notifiers/circuit_breaker.rb', line 24

def record_success
  MUTEX.synchronize do
    @failure_count = 0
    @last_failure_at = nil
  end
end

.reset!Object



31
32
33
34
35
36
# File 'lib/rails_informant/notifiers/circuit_breaker.rb', line 31

def reset!
  MUTEX.synchronize do
    @failure_count = 0
    @last_failure_at = nil
  end
end