Arrea.Supervisor (Arrea v2.2.0)

Copy Markdown View Source

Root supervisor for the Arrea engine layer.

Strategy: :rest_for_one

Children are ordered by dependency: each process depends on the previous ones, and only the dependent processes are restarted when one fails.

1. Registry (Arrea.Registry)               Workers
2. Registry (Arrea.CircuitBreaker.Registry)  Circuit breakers
3. Arrea.Monitor                            Depende de los registries
4. Arrea.Leader                             Depende de Monitor y registries
5. Arrea.WorkerSupervisor                   Depende de Leader y registries

Con :rest_for_one:

  • Si falla un Registry → reinicia todo (raro; los registries son muy estables)
  • Si falla Monitor → reinicia Monitor + Leader + WorkerSupervisor (batches activos se pierden)
  • Si falla Leader → reinicia solo Leader + WorkerSupervisor (Monitor y registries intactos)
  • Si falla WorkerSupervisor → reinicia solo WorkerSupervisor (impacto mínimo)

Esto es significativamente mejor que :one_for_all, donde cualquier fallo (incluyendo el del WorkerSupervisor) reiniciaba todos los procesos.

Summary

Functions

Returns a specification to start this module under a supervisor.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

start_link(opts)