ClusterHelper.EventHandler behaviour (ClusterHelper v0.5.1)

Copy Markdown View Source

Optional callback behaviour for ClusterHelper events.

Implement this behaviour in any module and set it in your config:

config :cluster_helper, event_handler: MyApp.ClusterEvents

All callbacks are optional — implement only the ones you need.

Example

```elixir
defmodule MyApp.ClusterEvents do
  @behaviour ClusterHelper.EventHandler

  @impl true
  def on_role_added(node, role) do
    Logger.info("Node #{node} gained role #{inspect(role)}")
  end

  @impl true
  def on_role_removed(node, role) do
    Logger.info("Node #{node} lost role #{inspect(role)}")
  end

  @impl true
  def on_node_added(node) do
    Logger.info("New node joined the cluster: #{node}")
  end

  @impl true
  def on_node_removed(node) do
    Logger.info("Node left the cluster: #{node}")
  end
end
```

Summary

Callbacks

Called when a previously unknown node is discovered for the first time (i.e. on the initial pull after it joins the cluster).

Called when a node goes down and is removed from the cluster.

Called whenever a role is inserted into the local ETS table for any node (local or remote). Fired once per role, even when a batch is added.

Called whenever a role is removed from a node in the local ETS table. Fired once per role, even when a batch is removed.

Callbacks

on_node_added(node)

(optional)
@callback on_node_added(node :: node()) :: :ok

Called when a previously unknown node is discovered for the first time (i.e. on the initial pull after it joins the cluster).

on_node_removed(node)

(optional)
@callback on_node_removed(node :: node()) :: :ok

Called when a node goes down and is removed from the cluster.

on_role_added(node, role)

(optional)
@callback on_role_added(node :: node(), role :: ClusterHelper.role()) :: :ok

Called whenever a role is inserted into the local ETS table for any node (local or remote). Fired once per role, even when a batch is added.

node is the node that owns the role; role can be any Elixir term.

on_role_removed(node, role)

(optional)
@callback on_role_removed(node :: node(), role :: ClusterHelper.role()) :: :ok

Called whenever a role is removed from a node in the local ETS table. Fired once per role, even when a batch is removed.

node is the node that lost the role; role can be any Elixir term.