Module: Phronomy::Diagnostics

Defined in:
lib/phronomy/diagnostics.rb

Overview

Developer-facing diagnostics for EventLoop and offload execution boundaries.

Class Method Summary collapse

Class Method Details

.assert_not_in_event_loop!Object



26
27
28
29
30
31
# File 'lib/phronomy/diagnostics.rb', line 26

def self.assert_not_in_event_loop!
  return unless Phronomy::Runtime.in_event_loop_context?

  raise Phronomy::EventLoopReentrancyError,
    "Blocking invoke called from inside an EventLoop action. Use invoke_async instead."
end

.dump(out: $stderr) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/phronomy/diagnostics.rb', line 6

def self.dump(out: $stderr)
  snap = Phronomy::Metrics.snapshot

  out.puts "[Phronomy::Diagnostics] Runtime state dump"
  out.puts "  OffloadPool:"
  out.puts "    pool_size        : #{snap[:offload_pool_size]}"
  out.puts "    active_count     : #{snap[:offload_pool_active]}"
  out.puts "    queue_depth      : #{snap[:offload_pool_queue_length]}"
  out.puts "    abandoned_active : #{snap[:offload_pool_abandoned_active]}"
  out.puts "    abandoned_total  : #{snap[:offload_pool_abandoned_total]}"
  out.puts "  EventLoop:"
  out.puts "    last_lag_ms      : #{snap[:event_loop_lag_last_ms]}"
  out.puts "    max_lag_ms       : #{snap[:event_loop_lag_max_ms]}"
  out.puts "    average_lag_ms   : #{snap[:event_loop_lag_average_ms]}"
end

.snapshotObject



22
23
24
# File 'lib/phronomy/diagnostics.rb', line 22

def self.snapshot
  Phronomy::Metrics.snapshot
end