Class: Julewire::Core::Integration::DestinationHealth

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/integration/destination_health.rb

Instance Method Summary collapse

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
16
# 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,
    failure_counter: failure_counter,
    track_failures: failure_counter == :failures
  )
end

Instance Method Details

#clear_degraded!Object



34
# File 'lib/julewire/core/integration/destination_health.rb', line 34

def clear_degraded! = @state.clear_failures!

#degraded?Boolean

Returns:

  • (Boolean)


36
# File 'lib/julewire/core/integration/destination_health.rb', line 36

def degraded? = @state.degraded?(status_from: :failure_or_loss)

#increment(key, by: 1) ⇒ Object



18
19
20
# File 'lib/julewire/core/integration/destination_health.rb', line 18

def increment(key, by: 1)
  @state.increment(key, by: by)
end

#last_callback_failureObject



38
# File 'lib/julewire/core/integration/destination_health.rb', line 38

def last_callback_failure = @state.last_callback_failure

#last_failureObject



42
# File 'lib/julewire/core/integration/destination_health.rb', line 42

def last_failure = @state.last_failure

#last_lossObject



40
# File 'lib/julewire/core/integration/destination_health.rb', line 40

def last_loss = @state.last_loss

#record_callback_failure(callback_failure) ⇒ Object



30
31
32
# File 'lib/julewire/core/integration/destination_health.rb', line 30

def record_callback_failure(callback_failure)
  @state.record_callback_failure(callback_failure)
end

#record_failure(error, counter: @failure_counter, **metadata) ⇒ Object



22
23
24
# File 'lib/julewire/core/integration/destination_health.rb', line 22

def record_failure(error, counter: @failure_counter, **)
  @state.record_failure(error, counter: counter, degrade: false, **)
end

#record_loss(reason:, counter: reason, **metadata) ⇒ Object



26
27
28
# File 'lib/julewire/core/integration/destination_health.rb', line 26

def record_loss(reason:, counter: reason, **)
  @state.record_loss(reason: reason, counter: counter, degrade: false, **)
end

#snapshot(status: nil, **fields) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/julewire/core/integration/destination_health.rb', line 44

def snapshot(status: nil, **fields)
  snapshot = @state.snapshot(status: status, status_from: :failure_or_loss, include_loss: true, **fields)
  callback_failure = @state.last_callback_failure
  return snapshot unless callback_failure

  snapshot.merge(last_callback_failure: callback_failure).freeze
end