class Movie::Cluster::MembershipCoordinator

Overview

Owns membership, reachability, revisions, and transition event emission. Network protocol scheduling remains in ClusterExtension.

Defined in:

movie/cluster/membership.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(self_unique_address : UniqueAddress, roles : Array(String), capacity : Int32, telemetry : ClusterTelemetry) #

[View source]

Instance Method Detail

def active_members : Array(Member) #

[View source]
def advance_departures(&can_advance : Member -> Bool) : Array(UniqueAddress) #

[View source]
def all_members : Array(Member) #

[View source]
def apply_departure(target : UniqueAddress, status : MemberStatus) : Bool #

[View source]
def check_reachability(peers : Array(Member), timeout_span : Time::Span) : Nil #

[View source]
def converged?(seen_digests : Hash(UniqueAddress, String)) : Bool #

[View source]
def departure_coordinator? : Bool #

[View source]
def digest : String #

[View source]
def initialize_self(status : MemberStatus) : Nil #

[View source]
def known_active?(sender : UniqueAddress) : Bool #

[View source]
def local_leader? : Bool #

[View source]
def mark_reachable(sender : UniqueAddress) : Nil #

[View source]
def member(unique_address : UniqueAddress) : Member | Nil #

[View source]
def merge(records : Enumerable(Member)) : Int32 #

[View source]
def merge_gossip(records : Enumerable(Member), sender : UniqueAddress) : Int32 #

Gossip may relay unchanged records, but only the locally recognized leader may author lifecycle changes. Independently formed seed members are the sole exception: they authenticate their own initial Up record.


[View source]
def participating? : Bool #

[View source]
def promote_joining_if_leader : Nil #

[View source]
def self_member : Member #

[View source]
def self_unique_address : UniqueAddress #

[View source]
def snapshot : ClusterSnapshot #

[View source]
def subscribe(subscriber : Movie::ActorRef(ClusterEvent), replay_state : Bool) : Nil #

[View source]
def subscriber_count : Int32 #

[View source]
def unsubscribe(subscriber : Movie::ActorRef(ClusterEvent)) : Nil #

[View source]
def up? : Bool #

[View source]