- Updating libring dependency to ~> 1.7. Needed for upgrade to OTP 27. See this PR to libring for details.
- Bugfixes for scenarios causing Horde to crash. See #266 and #263.
- [BREAKING] The first parameter of
Horde.DistributionStrategy.choose_node/2
has changed from the identifier to the full child spec. See #239. - Use
:erpc
instead of:rpc
. See #265. - Stop eagerly registering processes in Horde.Registry. This solves #250.
- Add
Horde.UniformRandomDistribution
process distribution strategy. See #252.
- Tweak dependency on
:telemetry
- Fix an issue with
members: :auto
- Add support for telemetry version 1.0.0
- Upgrade to delta_crdt 0.6.0
- Fix a deadlock that occurred if a process was being restarted while
Horde.DynamicSupervisor.start_child/2
was being called. #218 - Respect
max_restarts
andmax_seconds
when given as options toHorde.DynamicSupervisor.child_spec/1
. #216
- Bump version of
telemetry_poller
dependency. #212
Horde.Registry.delete_meta/2
has been added to reflect its addition inElixir.Registry
in upcoming release 1.11.0 #208
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
. #196Horde.DynamicSupervisor
andHorde.Registry
now support the optionmembers: :auto
to automatically detect other identically-named supervisors or registries. #184Horde.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