Packages
partisan
4.1.0
5.0.3
5.0.2
5.0.1
5.0.0
5.0.0-rc.16
5.0.0-rc.8
5.0.0-rc.2
5.0.0-rc.1
5.0.0-beta.24
5.0.0-beta.21
5.0.0-beta.20
5.0.0-beta.18
5.0.0-beta.17
5.0.0-beta.16
5.0.0-beta.15
5.0.0-beta.14
5.0.0-beta.13
4.1.0
3.0.0
2.1.0
2.0.0
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.2
1.0.1
1.0.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
0.0.1
Partisan is a scalable and flexible, TCP-based membership system and distribution layer for the BEAM.
Current section
Files
Jump to
Current section
Files
include/partisan.hrl
-define(APP, partisan).
-define(PEER_IP, {127, 0, 0, 1}).
-define(PEER_PORT, 9090).
-define(PEER_SERVICE_SERVER, partisan_peer_service_server).
-define(FANOUT, 5).
-define(CACHE, partisan_connection_cache).
-define(CONNECTION_JITTER, 1000).
-define(TRACING, false).
-define(RELAY_TTL, 5).
-define(MEMBERSHIP_PROTOCOL_CHANNEL, membership).
%% Optimizations.
-define(RPC_CHANNEL, rpc).
-define(DEFAULT_CHANNEL, undefined).
-define(DEFAULT_PARTITION_KEY, undefined).
-define(PARALLELISM, 1). %% How many connections should exist between nodes?
% -define(CHANNELS, %% What channels should be established?
% [undefined, broadcast, vnode, {monotonic, gossip}]).
-define(CHANNELS, [?DEFAULT_CHANNEL]).
-define(CAUSAL_LABELS, []). %% What causal channels should be established?
%% Gossip.
-define(GOSSIP_CHANNEL, gossip).
-define(GOSSIP_FANOUT, 5). %% TODO: FIX ME.
-define(GOSSIP_GC_MIN_SIZE, 10).
%% Pluggable manager.
-define(PERIODIC_INTERVAL, 10000).
%% Scamp protocol.
-define(SCAMP_C_VALUE, 5). %% TODO: FIX ME.
-define(SCAMP_MESSAGE_WINDOW, 10).
%% Defaults.
-define(DEFAULT_PEER_SERVICE_MANAGER, partisan_pluggable_peer_service_manager).
-define(DEFAULT_MEMBERSHIP_STRATEGY, partisan_full_membership_strategy).
-define(DEFAULT_ORCHESTRATION_STRATEGY, undefined).
%% Pluggable manager options.
-define(DISTANCE_ENABLED, true).
-define(PERIODIC_ENABLED, true).
%% Test variables.
-define(MEMBERSHIP_STRATEGY_TRACING, false).
-record(property_state,
{joined_nodes :: [node()],
nodes :: [node()],
node_state :: {dict:dict(), dict:dict()},
fault_model_state :: term(),
counter :: non_neg_integer()}).
-define(SUPPORT, partisan_support).
-define(OVERRIDE_PERIODIC_INTERVAL, 10000).
-define(UTIL, partisan_plumtree_util).
-define(DEFAULT_LAZY_TICK_PERIOD, 1000).
-define(DEFAULT_EXCHANGE_TICK_PERIOD, 10000).
-define(XBOT_MIN_INTERVAL, 5000).
-define(XBOT_RANGE_INTERVAL, 60000).
% parameter used for xbot optimization
% - latency (uses ping to check better nodes)
% - true (always returns true when checking better)
-define(XPARAM, latency).
-type options() :: [{atom(), term()}].
-type actor() :: binary().
-type listen_addr() :: #{ip => inet:ip_address(), port => non_neg_integer()}.
-type node_spec() :: #{name => node(),
listen_addrs => [listen_addr()],
channels => [channel()],
parallelism => non_neg_integer()}.
-type message() :: term().
-type name() :: node().
-type partitions() :: [{reference(), node_spec()}].
-type ttl() :: non_neg_integer().
-type channel() :: atom().
%% TODO: add type annotations
-record(orchestration_strategy_state,
{orchestration_strategy,
is_connected,
was_connected,
attempted_nodes,
peer_service,
graph,
tree,
eredis,
servers,
nodes}).