pub struct ClusterTransportTuning {Show 20 fields
pub raft_tick_interval_ms: u64,
pub election_timeout_min_secs: u64,
pub election_timeout_max_secs: u64,
pub election_timeout_min_ms: u64,
pub election_timeout_max_ms: u64,
pub rpc_timeout_secs: u64,
pub quic_keep_alive_secs: u64,
pub quic_idle_timeout_secs: u64,
pub quic_max_bi_streams: u32,
pub quic_max_uni_streams: u32,
pub quic_receive_window: u32,
pub quic_send_window: u32,
pub quic_stream_receive_window: u32,
pub broadcast_threshold_bytes: usize,
pub ghost_sweep_interval_secs: u64,
pub health_ping_interval_secs: u64,
pub health_failure_threshold: u32,
pub descriptor_lease_duration_secs: u64,
pub descriptor_lease_renewal_check_interval_secs: u64,
pub descriptor_lease_renewal_threshold_pct: u8,
}Expand description
Cluster transport tuning for QUIC connections and Raft consensus.
Fields§
§raft_tick_interval_ms: u64§election_timeout_min_secs: u64§election_timeout_max_secs: u64§election_timeout_min_ms: u64Sub-second override for election_timeout_min_secs. When non-zero,
this value (in milliseconds) is used instead of the seconds field.
Production deployments leave this 0 and use the seconds field;
integration tests set this to ~150ms so 3-node convergence completes
in under a second instead of 1–2 seconds per cluster spawn.
election_timeout_max_ms: u64Sub-second override for election_timeout_max_secs. See
Self::election_timeout_min_ms.
rpc_timeout_secs: u64§quic_keep_alive_secs: u64§quic_idle_timeout_secs: u64§quic_max_bi_streams: u32§quic_max_uni_streams: u32§quic_receive_window: u32§quic_send_window: u32§quic_stream_receive_window: u32§broadcast_threshold_bytes: usizeMaximum payload size for broadcast join strategy selection.
Above this threshold, shuffle join is preferred over broadcast.
See nodedb_cluster::distributed_join::select_strategy.
ghost_sweep_interval_secs: u64How often (in seconds) to sweep for dangling ghost nodes.
See nodedb_cluster::ghost_sweeper::DEFAULT_SWEEP_INTERVAL.
health_ping_interval_secs: u64Cluster health check ping interval in seconds.
See nodedb_cluster::health::DEFAULT_PING_INTERVAL.
health_failure_threshold: u32Consecutive ping failures before marking a node as down.
See nodedb_cluster::health::DEFAULT_FAILURE_THRESHOLD.
descriptor_lease_duration_secs: u64Default duration of a descriptor lease, in seconds.
Used by SharedState::acquire_descriptor_lease when the
caller does not specify an explicit duration. The renewal
loop re-acquires leases at 80% of this value.
descriptor_lease_renewal_check_interval_secs: u64How often the descriptor-lease renewal loop wakes up to look for near-expiry leases. Default: 60s. Tests override this with a much smaller value (e.g. 1s) to drive renewal within a multi-second test budget.
descriptor_lease_renewal_threshold_pct: u8Re-acquire leases when the remaining time (until expiry) falls below this percentage of the original duration. Default: 20 (re-acquire when 80% of the duration has elapsed). Tests can set this to 50 to make renewal trigger earlier in the lease lifecycle.
Implementations§
Source§impl ClusterTransportTuning
impl ClusterTransportTuning
Sourcepub fn effective_election_timeout_min_ms(&self) -> u64
pub fn effective_election_timeout_min_ms(&self) -> u64
Effective minimum election timeout. Returns _ms when non-zero,
otherwise _secs * 1000. Tests use _ms for sub-second values;
production leaves it 0 and the seconds field wins.
Sourcepub fn effective_election_timeout_max_ms(&self) -> u64
pub fn effective_election_timeout_max_ms(&self) -> u64
Effective maximum election timeout. See
Self::effective_election_timeout_min_ms.
Trait Implementations§
Source§impl Clone for ClusterTransportTuning
impl Clone for ClusterTransportTuning
Source§fn clone(&self) -> ClusterTransportTuning
fn clone(&self) -> ClusterTransportTuning
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClusterTransportTuning
impl Debug for ClusterTransportTuning
Source§impl Default for ClusterTransportTuning
impl Default for ClusterTransportTuning
Source§impl<'de> Deserialize<'de> for ClusterTransportTuning
impl<'de> Deserialize<'de> for ClusterTransportTuning
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for ClusterTransportTuning
impl RefUnwindSafe for ClusterTransportTuning
impl Send for ClusterTransportTuning
impl Sync for ClusterTransportTuning
impl Unpin for ClusterTransportTuning
impl UnsafeUnpin for ClusterTransportTuning
impl UnwindSafe for ClusterTransportTuning
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<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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.