Class: Julewire::Core::Diagnostics::IntegrationHealthStore

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/diagnostics/integration_health_store.rb

Instance Method Summary collapse

Constructor Details

#initializeIntegrationHealthStore

Returns a new instance of IntegrationHealthStore.



7
8
9
10
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 7

def initialize
  @mutex = Mutex.new
  @entries = {}
end

Instance Method Details

#after_fork!Object



44
45
46
47
48
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 44

def after_fork!
  @mutex = Mutex.new
  @entries = {}
  nil
end

#healthObject



33
34
35
36
37
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 33

def health
  @mutex.synchronize do
    @entries.to_h { |name, entry| [name, entry.snapshot] }.freeze
  end
end

#record_failure(integration, error, **metadata) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 12

def record_failure(integration, error, **)
  name = normalize_name(integration)
   = { phase: :integration, integration: name }.merge()
  @mutex.synchronize do
    entry_for(name).record_failure(error, **)
  end
  nil
rescue StandardError
  nil
end

#record_success(integration) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 23

def record_success(integration)
  name = normalize_name(integration)
  @mutex.synchronize do
    entry_for(name).record_success
  end
  nil
rescue StandardError
  nil
end

#reset!Object



39
40
41
42
# File 'lib/julewire/core/diagnostics/integration_health_store.rb', line 39

def reset!
  @mutex.synchronize { @entries.clear }
  nil
end