Class: Julewire::Core::Integration::DestinationHealth
- Inherits:
-
Object
- Object
- Julewire::Core::Integration::DestinationHealth
- Defined in:
- lib/julewire/core/integration/destination_health.rb
Instance Method Summary collapse
- #clear_degradation_if_unchanged(marker) ⇒ Object
- #clear_failures! ⇒ Object
- #degradation_marker ⇒ Object
- #degraded? ⇒ Boolean
- #increment(key, by: 1) ⇒ Object
-
#initialize(counter_keys:, callback_failure_counter: nil, failure_counter: :failures) ⇒ DestinationHealth
constructor
A new instance of DestinationHealth.
- #last_callback_failure ⇒ Object
- #last_failure ⇒ Object
- #last_loss ⇒ Object
- #record_callback_failure(callback_failure) ⇒ Object
- #record_failure(error, counter: @failure_counter, **metadata) ⇒ Object
- #record_loss(reason:, counter: reason, **metadata) ⇒ Object
- #recover_if_successful ⇒ Object
- #snapshot(status: nil, **fields) ⇒ Object
Constructor Details
#initialize(counter_keys:, callback_failure_counter: nil, failure_counter: :failures) ⇒ DestinationHealth
Returns a new instance of DestinationHealth.
8 9 10 11 12 13 14 15 |
# File 'lib/julewire/core/integration/destination_health.rb', line 8 def initialize(counter_keys:, callback_failure_counter: nil, failure_counter: :failures) @failure_counter = failure_counter @state = Diagnostics::Health.new( callback_failure_counter: callback_failure_counter, counter_keys: counter_keys, track_failures: failure_counter == :failures ) end |
Instance Method Details
#clear_degradation_if_unchanged(marker) ⇒ Object
35 |
# File 'lib/julewire/core/integration/destination_health.rb', line 35 def clear_degradation_if_unchanged(marker) = @state.clear_degradation_if_unchanged(marker) |
#clear_failures! ⇒ Object
44 |
# File 'lib/julewire/core/integration/destination_health.rb', line 44 def clear_failures! = @state.clear_failures! |
#degradation_marker ⇒ Object
33 |
# File 'lib/julewire/core/integration/destination_health.rb', line 33 def degradation_marker = @state.degradation_marker |
#degraded? ⇒ Boolean
46 |
# File 'lib/julewire/core/integration/destination_health.rb', line 46 def degraded? = @state.degraded? |
#increment(key, by: 1) ⇒ Object
17 18 19 |
# File 'lib/julewire/core/integration/destination_health.rb', line 17 def increment(key, by: 1) @state.increment(key, by: by) end |
#last_callback_failure ⇒ Object
48 |
# File 'lib/julewire/core/integration/destination_health.rb', line 48 def last_callback_failure = @state.last_callback_failure |
#last_failure ⇒ Object
52 |
# File 'lib/julewire/core/integration/destination_health.rb', line 52 def last_failure = @state.last_failure |
#last_loss ⇒ Object
50 |
# File 'lib/julewire/core/integration/destination_health.rb', line 50 def last_loss = @state.last_loss |
#record_callback_failure(callback_failure) ⇒ Object
29 30 31 |
# File 'lib/julewire/core/integration/destination_health.rb', line 29 def record_callback_failure(callback_failure) @state.record_callback_failure(callback_failure) end |
#record_failure(error, counter: @failure_counter, **metadata) ⇒ Object
21 22 23 |
# File 'lib/julewire/core/integration/destination_health.rb', line 21 def record_failure(error, counter: @failure_counter, **) @state.record_failure(error, counter: counter, **) end |
#record_loss(reason:, counter: reason, **metadata) ⇒ Object
25 26 27 |
# File 'lib/julewire/core/integration/destination_health.rb', line 25 def record_loss(reason:, counter: reason, **) @state.record_loss(reason: reason, counter: counter, **) end |
#recover_if_successful ⇒ Object
37 38 39 40 41 42 |
# File 'lib/julewire/core/integration/destination_health.rb', line 37 def recover_if_successful marker = degradation_marker result = yield clear_degradation_if_unchanged(marker) unless result == false result end |
#snapshot(status: nil, **fields) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/julewire/core/integration/destination_health.rb', line 54 def snapshot(status: nil, **fields) snapshot = @state.snapshot(status: status, include_loss: true, **fields) callback_failure = last_callback_failure return snapshot unless callback_failure snapshot.merge(last_callback_failure: callback_failure).freeze end |