Logo FsShelter

MemberView Module

Functions and values

Function or value Description

MemberView.confirmDead nowMs peer view

Full Usage: MemberView.confirmDead nowMs peer view

Parameters:
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

Confirm Suspect → Dead after indirect probes fail past suspectTimeoutMs. Bumps epoch because the live set shrinks. Errors if peer unknown or is Self.

nowMs : int64
peer : PeerId
view : MemberView
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

MemberView.digest view

Full Usage: MemberView.digest view

Parameters:
Returns: MemberDigest list

Project the current view to a wire-ready digest list (strips local bookkeeping fields).

view : MemberView
Returns: MemberDigest list

MemberView.hasQuorum requiredQuorum view

Full Usage: MemberView.hasQuorum requiredQuorum view

Parameters:
Returns: bool

True when live count ≥ requiredQuorum.

requiredQuorum : int
view : MemberView
Returns: bool

MemberView.init self selfEndpoint nowMs

Full Usage: MemberView.init self selfEndpoint nowMs

Parameters:
Returns: MemberView

Fresh view containing only Self as Alive at Incarnation 0, Epoch 0.

self : PeerId
selfEndpoint : PeerEndpoint
nowMs : int64
Returns: MemberView

MemberView.join nowMs digest view

Full Usage: MemberView.join nowMs digest view

Parameters:
Returns: MemberView * MembershipEvent list

Add or refresh a peer from an inbound digest / seed list. If the peer is new, emits PeerJoined and bumps epoch; if it is known, applies SWIM merge semantics on that single entry.

nowMs : int64
digest : MemberDigest
view : MemberView
Returns: MemberView * MembershipEvent list

MemberView.leave _nowMs peer view

Full Usage: MemberView.leave _nowMs peer view

Parameters:
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

Mark a peer as having left cleanly (received a Leaving envelope). Removes from the view and bumps epoch. Errors if peer unknown or is Self.

_nowMs : int64
peer : PeerId
view : MemberView
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

MemberView.live view

Full Usage: MemberView.live view

Parameters:
Returns: Member list

Live members (Alive only; input for HRW and quorum counting).

view : MemberView
Returns: Member list

MemberView.merge nowMs digests view

Full Usage: MemberView.merge nowMs digests view

Parameters:
Returns: MemberView * MembershipEvent list

Fold a set of remote digests into our view — SWIM merge with incarnation precedence (higher wins); on equal incarnations, state precedence is Dead > Suspect > Alive, except Self is always Alive in its own view. Bumps epoch once if the live set actually changes.

nowMs : int64
digests : MemberDigest list
view : MemberView
Returns: MemberView * MembershipEvent list

MemberView.refresh nowMs peer view

Full Usage: MemberView.refresh nowMs peer view

Parameters:
Returns: MemberView

Heard from a peer directly — bounces Suspect back to Alive if we had suspected it, and updates LastHeardMs in any case. No-op if unknown.

nowMs : int64
peer : PeerId
view : MemberView
Returns: MemberView

MemberView.refuteSelf nowMs view

Full Usage: MemberView.refuteSelf nowMs view

Parameters:
Returns: MemberView * MembershipEvent list

We received a digest claiming *we* are Suspect or Dead. Bump our own incarnation so our next gossip refutes it. Emits PeerRefuted.

nowMs : int64
view : MemberView
Returns: MemberView * MembershipEvent list

MemberView.suspect nowMs peer view

Full Usage: MemberView.suspect nowMs peer view

Parameters:
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

Promote Alive → Suspect when local pings time out. No epoch bump. Errors if peer unknown or is Self.

nowMs : int64
peer : PeerId
view : MemberView
Returns: Result<(MemberView * MembershipEvent list), MembershipError>

MemberView.sweep nowMs heartbeatMs suspectTimeoutMs view

Full Usage: MemberView.sweep nowMs heartbeatMs suspectTimeoutMs view

Parameters:
    nowMs : int64
    heartbeatMs : int
    suspectTimeoutMs : int
    view : MemberView

Returns: MemberView * MembershipEvent list

Time-based sweep: promote Alive peers whose LastHeardMs is older than heartbeatMs * K to Suspect; confirm Dead those Suspect for more than suspectTimeoutMs. Returns all resulting state transitions as events and bumps epoch at most once if the live set changed.

nowMs : int64
heartbeatMs : int
suspectTimeoutMs : int
view : MemberView
Returns: MemberView * MembershipEvent list

Type something to start searching.