API Reference partisan v#6.0.0

View Source

Modules

This module provides a gen_tcp acceptor behaviour for use with acceptor_pool. There are three callbacks.

This module provides a gen_tcp acceptor pool supervisor. An acceptor_pool must define the acceptor_pool behaviour callback, which is very similar to the supervisor behaviour except all children must be acceptor proccesses and only the map terms are supported. The only callback is init/1

The primary Partisan API: process operations, messaging, monitoring and cluster membership over Partisan's overlay network.

Public API for Partisan's epidemic-broadcast groups.

Behaviour for a broadcast group's tree engine.

Supervisor for Partisan's broadcast groups.

This module realises the partisan_peer_service_manager behaviour implementing client-server topology where clients communicate with a single server and servers form a full-mesh topology.

This module handles the validation, access and modification of Partisan configuration options.

Executes a function call on a remote node over the Partisan transport.

This module implements the full-mesh membership strategy to be used with {link partisan_pluggable_peer_service_manager}.

Orchestrator module that ties together partisan_otp_rewrite and partisan_otp_patches to generate partisan versions of OTP modules from installed OTP beam files.

HyParView membership — a reliable partial-view overlay for gossip that stays connected under high node-failure rates (Leitão, Pereira & Rodrigues, HyParView: a Membership Protocol for Reliable Gossip-Based Broadcast, DSN 2007). This module implements the partisan_peer_service_manager behaviour.

An implementation of a set of bounded open intervals.

Lock-free snapshot of the cluster's membership, with a non-blocking change-notification feed.

This module represents the cluster membership view for this node.

This module is responsible for monitoring processes on remote nodes and implementing the monitoring API provided by the partisan module which follows the API provided by the Erlang modules erlang and net_kernel.

TODO validate this module, align vs partisan_gen and if useful add gen_statem API, deprecating fsm API.

Structural AST patches applied AFTER the mechanical rewrite done by partisan_otp_rewrite:transform/2. Replaces, appends, or adds functions and exports in the already-rewritten forms for gen_server and gen modules.

Mechanical AST rewrite engine for transforming OTP modules (gen_server, gen, etc.) into their Partisan equivalents. Stateless and deterministic.

Generates partisan-adapted versions of OTP test suites.

This state machine is responsible for enabled cluster peers using the defined implementation backend (callback module).

An implementation of the partisan_peer_discovery_agent behaviour that uses DNS for service discovery.

An implementation of the partisan_peer_discovery_agent behaviour that uses a static list of node names for service discovery.

This modules implements the Peer Service API. All functions in this module forward the invocation to the configured peer service manager (option peer_service_manager) which must be one of the Partisan's managers implementing partisan_peer_service_manager, i.e. one of

Wrapper that allows transparent usage of plain TCP or TLS socket for peer connections.

This module realises the partisan_peer_service_manager behaviour implementing a peer sampling service with a pluggable overlay topology by delegating the topology definition to a callback module implementing the {partisan_peer_service_strategy} behaviour.

This modules implements a server that realises the partisan_plumtree_broadcast_handler behaviour in order to diseminate heartbeat messages. Partisan uses these heartbeat messages to stimulate the Epidemic Broadcast Tree construction.

The process that runs one broadcast group — the supervised owner of a single epidemic-broadcast context: its own mailbox, spanning-tree state and outstanding-lazy table. Group identity is the handler module, so each broadcast handler runs in its own group and independent gossip streams never share a tree or a mailbox. The public entry points for broadcasting and managing groups are in partisan_broadcast.

Behaviour for a partisan_plumtree_broadcast handler: the application-specific half of an epidemic broadcast.

The Plumtree tree engine — a self-optimising epidemic broadcast that combines an eager-push spanning tree with lazy-push redundancy (Leitão, Pereira & Rodrigues, Epidemic Broadcast Trees, SRDS 2007). This is broadcast engine #1 behind partisan_broadcast_engine; Thicket is engine #2 (partisan_thicket_engine).

Remote references are Partisan's representation for remote process identifiers (pid()), registered names and references (reference()).

Partisan's counterpart of Erlang's rpc module.

The counterpart of OTP's rex server: the node-wide process that serves the RPC operations which are *defined* as running on a server.

Thin wrapper around telemetry:execute/3 used by every [partisan, ...] event in the codebase (see telemetry.md).

Thicket broadcast engine — T interior-node-disjoint spanning trees over one overlay, with each node's forwarding load bounded (Ferreira, Leitão & Rodrigues, Thicket: A Protocol for Building and Maintaining Multiple Trees in a P2P Overlay, SRDS 2010). This is broadcast engine #2 behind partisan_broadcast_engine; Plumtree is engine #1.

This module requires disterl.

Parse transformation that replaces all instances of the Erlang bang operator ! with a call to partisan:forward_message/2.

Ringleader parse transformation.

A simple Erlang implementation of vector clocks as inspired by Lamport logical clocks. Taken from Riak.