pub struct CheckpointManifest {Show 22 fields
pub version: u32,
pub checkpoint_id: u64,
pub epoch: u64,
pub timestamp_ms: u64,
pub source_offsets: HashMap<String, ConnectorCheckpoint>,
pub sink_epochs: HashMap<String, u64>,
pub sink_commit_statuses: HashMap<String, SinkCommitStatus>,
pub table_offsets: HashMap<String, ConnectorCheckpoint>,
pub operator_states: HashMap<String, OperatorCheckpoint>,
pub table_store_checkpoint_path: Option<String>,
pub wal_position: u64,
pub per_core_wal_positions: Vec<u64>,
pub watermark: Option<i64>,
pub source_watermarks: HashMap<String, i64>,
pub source_names: Vec<String>,
pub sink_names: Vec<String>,
pub pipeline_hash: Option<u64>,
pub inflight_data: HashMap<String, Vec<InFlightRecord>>,
pub size_bytes: u64,
pub is_incremental: bool,
pub parent_id: Option<u64>,
pub state_checksum: Option<String>,
}Expand description
A point-in-time snapshot of all pipeline state.
This is the single source of truth for checkpoint persistence, replacing the three previously disconnected checkpoint systems:
PipelineCheckpoint(source offsets + sink epochs)DagCheckpointSnapshot(operator state — in-memory only)CheckpointMetadata(WAL position + watermark)
Fields§
§version: u32Manifest format version (for future evolution).
checkpoint_id: u64Unique, monotonically increasing checkpoint ID.
epoch: u64Epoch number for exactly-once coordination.
timestamp_ms: u64Timestamp when checkpoint was created (millis since Unix epoch).
source_offsets: HashMap<String, ConnectorCheckpoint>Per-source connector offsets (key: source name).
sink_epochs: HashMap<String, u64>Per-sink last committed epoch (key: sink name).
sink_commit_statuses: HashMap<String, SinkCommitStatus>Per-sink commit status (key: sink name).
Populated during the commit phase (Step 6) and saved to the manifest
afterward. Recovery uses this to decide which sinks need rollback
(those with SinkCommitStatus::Pending or SinkCommitStatus::Failed).
table_offsets: HashMap<String, ConnectorCheckpoint>Per-table source offsets for reference tables (key: table name).
operator_states: HashMap<String, OperatorCheckpoint>Per-operator checkpoint data (key: operator/node name).
Small state is inlined as base64. Large state is stored in a separate
state.bin file and this map holds only a reference marker.
table_store_checkpoint_path: Option<String>Path to the table store checkpoint, if any.
wal_position: u64WAL position for single-writer mode.
per_core_wal_positions: Vec<u64>Per-core WAL positions at the time of operator snapshot.
During recovery, WAL replay must start after these positions to
avoid replaying entries already reflected in the operator state.
Index i corresponds to the WAL segment for core i.
watermark: Option<i64>Global watermark at checkpoint time.
source_watermarks: HashMap<String, i64>Per-source watermarks (key: source name).
source_names: Vec<String>Sorted names of all registered sources at checkpoint time.
Used during recovery to detect topology changes (added/removed sources) and warn the operator.
sink_names: Vec<String>Sorted names of all registered sinks at checkpoint time.
pipeline_hash: Option<u64>Hash of the pipeline configuration at checkpoint time.
Computed from SQL queries, source/sink configuration, and connector options. Recovery logs a warning when this changes, indicating operator state may be incompatible with the new configuration.
inflight_data: HashMap<String, Vec<InFlightRecord>>In-flight channel data captured during unaligned checkpoints.
Key: operator name. Value: list of in-flight records from input channels. Empty for aligned checkpoints. During recovery, these events are replayed before resuming normal processing.
size_bytes: u64Total size of all checkpoint data in bytes (manifest + state.bin).
is_incremental: boolWhether this is an incremental checkpoint (only deltas since parent).
parent_id: Option<u64>Parent checkpoint ID for incremental checkpoints.
state_checksum: Option<String>SHA-256 hex digest of the sidecar state.bin file (if any).
Written during checkpoint commit so that recovery can verify the sidecar hasn’t been corrupted or truncated on disk/S3.
Implementations§
Source§impl CheckpointManifest
impl CheckpointManifest
Sourcepub fn validate(&self) -> Vec<ManifestValidationError>
pub fn validate(&self) -> Vec<ManifestValidationError>
Validates manifest consistency before recovery.
Returns a list of issues found. An empty list means the manifest is valid. Callers should treat non-empty results as warnings (recovery may still proceed) or errors depending on severity.
Trait Implementations§
Source§impl Clone for CheckpointManifest
impl Clone for CheckpointManifest
Source§fn clone(&self) -> CheckpointManifest
fn clone(&self) -> CheckpointManifest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CheckpointManifest
impl Debug for CheckpointManifest
Source§impl<'de> Deserialize<'de> for CheckpointManifest
impl<'de> Deserialize<'de> for CheckpointManifest
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>,
Source§impl PartialEq for CheckpointManifest
impl PartialEq for CheckpointManifest
Source§impl Serialize for CheckpointManifest
impl Serialize for CheckpointManifest
impl StructuralPartialEq for CheckpointManifest
Auto Trait Implementations§
impl Freeze for CheckpointManifest
impl RefUnwindSafe for CheckpointManifest
impl Send for CheckpointManifest
impl Sync for CheckpointManifest
impl Unpin for CheckpointManifest
impl UnsafeUnpin for CheckpointManifest
impl UnwindSafe for CheckpointManifest
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§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,
§impl<T> Code for Twhere
T: Serialize + DeserializeOwned,
impl<T> Code for Twhere
T: Serialize + DeserializeOwned,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more