pub struct CheckpointConfig {
pub interval: Option<Duration>,
pub max_retained: usize,
pub alignment_timeout: Duration,
pub pre_commit_timeout: Duration,
pub persist_timeout: Duration,
pub commit_timeout: Duration,
pub incremental: bool,
pub state_inline_threshold: usize,
pub max_checkpoint_bytes: Option<usize>,
pub max_pending_changelog_entries: usize,
pub adaptive: Option<AdaptiveCheckpointConfig>,
pub unaligned: Option<UnalignedCheckpointConfig>,
}Expand description
Unified checkpoint configuration.
Fields§
§interval: Option<Duration>Interval between checkpoints. None = manual only.
max_retained: usizeMaximum number of retained checkpoints.
alignment_timeout: DurationMaximum time to wait for barrier alignment at fan-in nodes.
pre_commit_timeout: DurationMaximum time to wait for all sinks to pre-commit.
A stuck sink will not block checkpointing indefinitely. Defaults to 30 seconds.
persist_timeout: DurationMaximum time to wait for manifest persist (filesystem I/O).
A hung or degraded filesystem will not stall the runtime indefinitely. Defaults to 120 seconds.
commit_timeout: DurationMaximum time to wait for all sinks to commit (phase 2).
Defaults to 60 seconds.
incremental: boolWhether to use incremental checkpoints.
state_inline_threshold: usizeMaximum operator state size (bytes) to inline in the JSON manifest.
States larger than this threshold are written to a state.bin sidecar
file and referenced by offset/length in the manifest. This avoids
inflating the manifest with base64-encoded blobs (~33% overhead).
Default: 1 MB (1_048_576). Set to usize::MAX to inline everything.
max_checkpoint_bytes: Option<usize>Maximum total checkpoint size in bytes (manifest + sidecar).
If the packed operator state exceeds this limit, the checkpoint is
rejected with [LDB-6014] and not persisted. This prevents
unbounded state from creating multi-GB sidecar files.
None means no limit (default). A warning is logged at 80% of the cap.
max_pending_changelog_entries: usizeMaximum pending changelog entries per drainer before forced clear.
On checkpoint failure, clear_pending() is normally skipped. If
failures repeat, pending entries grow unboundedly → OOM. This cap
is a safety valve: if any drainer exceeds it after a failure, all
drainers are cleared and an [LDB-6010] warning is logged.
Default: 10,000,000 entries.
adaptive: Option<AdaptiveCheckpointConfig>Adaptive checkpoint interval configuration.
When Some, the coordinator dynamically adjusts the checkpoint interval
based on observed checkpoint durations using an exponential moving average.
When None (default), the static interval is used unchanged.
unaligned: Option<UnalignedCheckpointConfig>Unaligned checkpoint configuration.
When Some, the coordinator can fall back to unaligned checkpoints
when barrier alignment takes too long under backpressure.
When None (default), only aligned checkpoints are used.
Trait Implementations§
Source§impl Clone for CheckpointConfig
impl Clone for CheckpointConfig
Source§fn clone(&self) -> CheckpointConfig
fn clone(&self) -> CheckpointConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CheckpointConfig
impl Debug for CheckpointConfig
Auto Trait Implementations§
impl Freeze for CheckpointConfig
impl RefUnwindSafe for CheckpointConfig
impl Send for CheckpointConfig
impl Sync for CheckpointConfig
impl Unpin for CheckpointConfig
impl UnsafeUnpin for CheckpointConfig
impl UnwindSafe for CheckpointConfig
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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.