barrel_p2p_hyparview (barrel_p2p v0.1.0)
View SourceSummary
Functions
Test-support: refuse overlay links to Nodes - drop them from the active/passive views, stop gossiping to them, and never (re)connect them - until unblock_peers/0. Holds a partition that disconnect_node alone cannot (HyParView would re-dial via passive promotion). Inert in normal operation: nothing calls it and the blocked set defaults empty.
Test-support: clear the blocked set (heal the partition).
Types
-type hyparview_msg() :: {join, Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {forward_join, NewPeer :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}, TTL :: integer(), Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {disconnect, Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {neighbor, Priority :: high | low, Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {neighbor_reply, Accept :: boolean(), Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {shuffle, TTL :: integer(), Peers :: [#peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}], Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}} | {shuffle_reply, Peers :: [#peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}], Sender :: #peer{id :: node(), address :: inet:ip_address() | undefined, port :: inet:port_number() | undefined, quic_port :: inet:port_number() | undefined, connected :: boolean(), priority :: high | low, last_seen :: integer() | undefined, fail_count :: non_neg_integer(), backoff_until :: integer() | undefined}}.
Functions
-spec active_view() -> [node()].
-spec block_peers([node()]) -> ok.
Test-support: refuse overlay links to Nodes - drop them from the active/passive views, stop gossiping to them, and never (re)connect them - until unblock_peers/0. Holds a partition that disconnect_node alone cannot (HyParView would re-dial via passive promotion). Inert in normal operation: nothing calls it and the blocked set defaults empty.
-spec cleanup_passive_view() -> ok.
-spec get_churn_stats() -> {Joins :: non_neg_integer(), Leaves :: non_neg_integer()}.
-spec handle_msg(hyparview_msg(), node()) -> ok.
-spec initiate_shuffle(node(), pos_integer()) -> ok.
-spec leave() -> ok.
-spec passive_view() -> [node()].
-spec unblock_peers() -> ok.
Test-support: clear the blocked set (heal the partition).