Jido.Exec.Supervisors (Jido Action v2.3.0)

View Source

Resolves supervisor names based on instance configuration.

This module provides instance isolation for Jido action execution. When a jido: option is provided, operations are routed to instance-scoped supervisors instead of the global Jido.Action.TaskSupervisor.

Usage

By default (no jido: option), the global supervisor is used:

Jido.Exec.run(MyAction, %{}, %{})
# Uses Jido.Action.TaskSupervisor

With instance isolation:

Jido.Exec.run(MyAction, %{}, %{}, jido: MyApp.Jido)
# Uses MyApp.Jido.TaskSupervisor

Instance Supervisor Naming Convention

When jido: MyApp.Jido is provided, supervisors are resolved as:

  • TaskSupervisor: MyApp.Jido.TaskSupervisor

The instance supervisors must be started as part of your application's supervision tree before use.

Summary

Functions

Returns the TaskSupervisor name to use based on options.

Returns the TaskSupervisor name without validating that it's running.

Functions

task_supervisor(opts)

@spec task_supervisor(keyword()) :: atom()

Returns the TaskSupervisor name to use based on options.

Options

  • :jido - Optional instance name (atom). When provided, returns the instance-scoped TaskSupervisor. When absent, returns the global supervisor.

Returns

The supervisor name as an atom.

Raises

  • ArgumentError if :jido option is provided but the instance supervisor is not running. This prevents silent fallback to global supervisors.

Examples

iex> Jido.Exec.Supervisors.task_supervisor([])
Jido.Action.TaskSupervisor

iex> Jido.Exec.Supervisors.task_supervisor(jido: MyApp.Jido)
MyApp.Jido.TaskSupervisor  # raises if not running

task_supervisor_name(opts)

@spec task_supervisor_name(keyword()) :: atom()

Returns the TaskSupervisor name without validating that it's running.

Use this when you need to resolve the supervisor name but don't want to raise if it's not running (e.g., for testing or introspection).

Examples

iex> Jido.Exec.Supervisors.task_supervisor_name([])
Jido.Action.TaskSupervisor

iex> Jido.Exec.Supervisors.task_supervisor_name(jido: MyApp.Jido)
MyApp.Jido.TaskSupervisor