Cluster.Strategy behaviour (libcluster v3.6.0)

Copy Markdown View Source

This module defines the behaviour for implementing clustering strategies.

Summary

Functions

Given a list of node names, attempts to connect to all of them. Returns :ok if all nodes connected, or {:error, [{node, reason}, ..]} if we failed to connect to some nodes.

Given a list of node names, attempts to disconnect from all of them. Returns :ok if all nodes disconnected, or {:error, [{node, reason}, ..]} if we failed to disconnect from some nodes.

Types

bad_nodes()

@type bad_nodes() :: [{node(), reason :: term()}]

mfa_tuple()

@type mfa_tuple() :: {module(), atom(), [term()]}

strategy_args()

@type strategy_args() :: [Cluster.Strategy.State.t()]

topology()

@type topology() :: atom()

Callbacks

child_spec(strategy_args)

@callback child_spec(strategy_args()) :: Supervisor.child_spec()

start_link(strategy_args)

@callback start_link(strategy_args()) ::
  {:ok, pid()} | :ignore | {:error, reason :: term()}

Functions

connect_nodes(topology, connect, list_nodes, nodes)

@spec connect_nodes(topology(), mfa_tuple(), mfa_tuple(), [atom()]) ::
  :ok | {:error, bad_nodes()}

Given a list of node names, attempts to connect to all of them. Returns :ok if all nodes connected, or {:error, [{node, reason}, ..]} if we failed to connect to some nodes.

All failures are logged.

difference(a, b)

disconnect_nodes(topology, disconnect, list_nodes, nodes)

@spec disconnect_nodes(topology(), mfa_tuple(), mfa_tuple(), [atom()]) ::
  :ok | {:error, bad_nodes()}

Given a list of node names, attempts to disconnect from all of them. Returns :ok if all nodes disconnected, or {:error, [{node, reason}, ..]} if we failed to disconnect from some nodes.

All failures are logged.

intersection(a, b)