Packages
ex_esdb
0.6.1
0.11.0
0.10.0
0.9.0
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14-alpha
0.0.13-alpha
0.0.12-alpha
0.0.11-alpha
0.0.10-alpha
0.0.9-alpha
0.0.8-alpha
0.0.6-alpha
0.0.5-alpha
0.0.4-alpha
0.0.3-alpha
0.0.2-alfa
0.0.1-alfa
ExESDB is a reincarnation of rabbitmq/khepri, specialized for use as a BEAM-native event store.
Current section
Files
Jump to
Current section
Files
lib/ex_esdb/inspection/process_inspector.ex
defmodule ExESDB.Inspection.ProcessInspector do
@moduledoc """
Inspects processes related to the ExESDB system.
Provides functionality to list, categorize, and analyze processes
for health monitoring and debugging.
"""
use GenServer
# API
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, opts, name: __MODULE__)
end
def list_processes() do
GenServer.call(__MODULE__, :list_processes)
end
# GenServer callbacks
@impl true
def init(_opts) do
{:ok, %{}}
end
@impl true
def handle_call(:list_processes, _from, state) do
processes = fetch_processes()
{:reply, processes, state}
end
# Private functions
defp fetch_processes do
Process.registered()
|> Enum.filter(&process_filter/1)
|> Enum.map(&process_info/1)
end
defp process_filter(name) do
name_str = to_string(name)
String.contains?(name_str, "ex_esdb")
end
defp process_info(name) do
pid = Process.whereis(name)
info = if pid, do: Process.info(pid), else: []
{name, pid, info}
end
end