pub struct PersistenceConfig {
pub strategy: PersistenceStrategy,
pub flush_policy: FlushPolicy,
pub max_buffered_entries: usize,
pub flush_workers: usize,
pub channel_capacity: usize,
}Expand description
Configuration parameters for log persistence behavior
Fields§
§strategy: PersistenceStrategyStrategy for persisting Raft logs
This controls the trade-off between durability guarantees and performance characteristics. The choice impacts both write throughput and recovery behavior after node failures.
flush_policy: FlushPolicyFlush policy for asynchronous strategies
This controls when log entries are flushed to disk. The choice impacts write performance and durability guarantees.
max_buffered_entries: usizeMaximum number of in-memory log entries to buffer when using async strategies
This acts as a safety valve to prevent memory exhaustion during periods of high write throughput or when disk persistence is slow.
flush_workers: usizeNumber of flush worker threads to use for log persistence.
- If set to 0, the system falls back to spawning a new task per flush (legacy behavior, lower latency but less stable under high load).
- If set to a positive number, a worker pool of that size will be created to process flush requests (more stable and efficient under high load).
This parameter allows tuning between throughput and latency depending on workload characteristics.
channel_capacity: usizeCapacity of the internal task channel for flush workers.
- Provides backpressure during high write throughput.
- Prevents unbounded task accumulation in memory when disk I/O is slow.
- Larger values improve throughput at the cost of higher memory usage, while smaller values apply stricter flow control but may reduce parallelism.
Trait Implementations§
Source§impl Clone for PersistenceConfig
impl Clone for PersistenceConfig
Source§fn clone(&self) -> PersistenceConfig
fn clone(&self) -> PersistenceConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PersistenceConfig
impl Debug for PersistenceConfig
Source§impl Default for PersistenceConfig
impl Default for PersistenceConfig
Source§impl<'de> Deserialize<'de> for PersistenceConfig
impl<'de> Deserialize<'de> for PersistenceConfig
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 PersistenceConfig
impl RefUnwindSafe for PersistenceConfig
impl Send for PersistenceConfig
impl Sync for PersistenceConfig
impl Unpin for PersistenceConfig
impl UnwindSafe for PersistenceConfig
Blanket Implementations§
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request