Skip to main content

laminar_core/cluster/control/leader/
mod.rs

1//! Weak leader election: lowest-ID live instance wins. Split-brain is
2//! tolerated because `epoch=N/_COMMIT` is CAS-guarded.
3
4use crate::cluster::discovery::NodeId;
5
6/// Smallest non-sentinel ID in `live`, or `None` if empty/all-sentinel.
7#[must_use]
8pub fn leader_of(live: &[NodeId]) -> Option<NodeId> {
9    live.iter().copied().filter(|n| !n.is_unassigned()).min()
10}
11
12#[cfg(test)]
13mod tests;