Horde.DynamicSupervisor
behaviour in a netsplit has changed. Previously, when a netsplit heals,Horde.DynamicSupervisor
would try to clean up any duplicate processes. It no longer does this, leaving that responsibility toHorde.Registry
.Horde.DynamicSupervisor
andHorde.Registry
now support the optionmembers: :auto
to automatically detect other identically-named supervisors or registries.Horde.DynamicSupervisor
now supports the optionprocess_redistribution: :active
to rebalance processes actively (aka, when a node joins or leaves the cluster). The default is:passive
, which only redistributes processes when a node dies or loses quorum. #164.
- Use MFA for
on_diff
instead of anonymous function, avoids passing around functions (which can be error-prone). #167.
Horde.Supervisor
has been renamed toHorde.DynamicSupervisor
.Horde.Registry
andHorde.Supervisor
now follow the api ofElixir.DynamicSupervisor
more closely (specificallyinit/1
callback and module-based Supervisor / Registry). #152.Horde.Registry.lookup/2
returns[]
instead of:undefined
when no match. #145child_spec/1
can be overridden inHorde.Registry
andHorde.Supervisor
#135 #143- Implement
:listeners
option for Horde.Registry. #142 - Fix via tuple usage with meta. #139
- Module-based
Horde.Supervisor
can overridechild_spec/1
. #135 - Added guides for handling clustering, process state handoff (during deploys), and special considerations for eventual consistency to the documentation.
Horde.Supervisor
now uses libring to distribute processes over nodes. #130Horde.Supervisor
publishes metrics with:telemetry
([:horde, :supervisor, :supervised_process_count]
). #132Horde.Supervisor
andHorde.Registry
now support optiondelta_crdt_options
, which you can use to tune your cluster. Also updated to the most recent DeltaCRDT. #100
Horde.Supervisor
now behaves more likeDynamicSupervisor
. #122Horde.Registry
sends an exit signal to the process that "loses" when a conflict is resolved. #118Horde.Registry.register/3
returns{:error, {:already_registered, pid}}
when applicable. This improves compatability withElixir.Registry
. #115- Adds
Horde.Registry.select/2
, which works the same asElixir.Registry.select/2
, which will land in Elixir 1.9. #110 - Fixes a bug causing
Horde.Supervisor
to crash if a child process was restarting whenHorde.Supervisor.delete_child/2
was called. #114