Packages

Track system processes across multiple instances over ssh connections

Current section

Files

Jump to
worker_tracker lib worker_tracker_supervisor.ex
Raw

lib/worker_tracker_supervisor.ex

defmodule WorkerTrackerSupervisor do
use Supervisor
def start_link() do
IO.puts("Starting the WorkerTracker Supervisor...")
Supervisor.start_link(__MODULE__, :ok, name: __MODULE__)
end
def init(:ok) do
children = [
{Registry, [keys: :duplicate, name: WorkerTracker.Notifier]},
{Registry, [keys: :duplicate, name: WorkerTracker.CollectionRegistry]},
{Registry, [keys: :unique, name: WorkerTracker.WorkerProcesses]},
{Registry, [keys: :unique, name: WorkerTracker.InstanceRegistry]},
{Registry, [keys: :unique, name: WorkerTracker.WorkerRegistry]},
{Registry, [keys: :unique, name: WorkerTracker.TmuxRegistry]},
{DynamicSupervisor, name: InstanceSupervisor, strategy: :one_for_one, max_restarts: 100},
{DynamicSupervisor, name: WorkerSupervisor, strategy: :one_for_one, max_restarts: 1000},
{DynamicSupervisor, name: TmuxSupervisor, strategy: :one_for_one, max_restarts: 1000},
{Task.Supervisor, name: WorkerTracker.TaskSupervisor},
{WorkerServer, []},
{TmuxTracker, []}
]
Supervisor.init(children, strategy: :one_for_one)
end
end