pub struct BootstrapCtx {
pub topology: Arc<RwLock<ClusterTopology>>,
pub routing: Arc<RwLock<RoutingTable>>,
pub transport: Arc<NexarTransport>,
pub multi_raft: Arc<Mutex<MultiRaft>>,
pub health: ClusterHealth,
}Expand description
Context available to every subsystem at startup.
All fields are Arc-wrapped so they can be cheaply cloned into
long-lived subsystem tasks without requiring BootstrapCtx itself
to be 'static.
topology and routing are behind RwLock so subsystems that
receive live state updates (e.g. DecommissionObserver,
RoutingLivenessHook) can observe mutations without copying the
full snapshot on every tick.
multi_raft is behind a Mutex because MultiRaft::tick takes
&mut self — the same type used by MigrationExecutor.
Fields§
§topology: Arc<RwLock<ClusterTopology>>Cluster topology — current node/group membership view.
routing: Arc<RwLock<RoutingTable>>Routing table — maps vShards to Raft groups and peer addresses.
transport: Arc<NexarTransport>QUIC transport layer — used by subsystems that need to send RPCs to peers (e.g. SWIM, decommission coordinator).
multi_raft: Arc<Mutex<MultiRaft>>Multi-Raft handle — subsystems that need to propose or read log entries obtain a reference here.
health: ClusterHealthShared health aggregator — subsystems write their own health state here so the registry and monitoring layer can observe it.
Implementations§
Source§impl BootstrapCtx
impl BootstrapCtx
Sourcepub fn new(
topology: Arc<RwLock<ClusterTopology>>,
routing: Arc<RwLock<RoutingTable>>,
transport: Arc<NexarTransport>,
multi_raft: Arc<Mutex<MultiRaft>>,
health: ClusterHealth,
) -> Self
pub fn new( topology: Arc<RwLock<ClusterTopology>>, routing: Arc<RwLock<RoutingTable>>, transport: Arc<NexarTransport>, multi_raft: Arc<Mutex<MultiRaft>>, health: ClusterHealth, ) -> Self
Construct a new context from its component parts.
Auto Trait Implementations§
impl Freeze for BootstrapCtx
impl !RefUnwindSafe for BootstrapCtx
impl Send for BootstrapCtx
impl Sync for BootstrapCtx
impl Unpin for BootstrapCtx
impl UnsafeUnpin for BootstrapCtx
impl !UnwindSafe for BootstrapCtx
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.