Arrea.Supervisor (Arrea v1.0.0)

Copy Markdown View Source

Supervisor raíz para la capa Engine de Arrea.

Estrategia: :rest_for_one

Los hijos se ordenan por dependencia: cada proceso depende de los anteriores, y solo los procesos dependientes se reinician cuando uno falla.

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)