pub struct Checkpoint {
pub last_completed_step: String,
pub cursor_step: String,
pub cursor: Vec<u8>,
pub updated_at_ms: i64,
pub schema_version: u32,
pub step_set_hash: String,
pub crashes_by_step: HashMap<String, u32>,
}Expand description
step replay Step replay. River persists this only after the worker returns, which loses it in exactly the mid-step crash the feature exists for; Sidekiq autosaves every 5s. Here the checkpoint rides the lease renewal that is already happening, so step boundaries are exact and cursor updates are bounded by the renewal interval.
Fields§
§last_completed_step: String§cursor_step: Stringthe step a cursor belongs to, if any
cursor: Vec<u8>opaque, caller-serialized
updated_at_ms: i64§schema_version: u32payload versioning × step replay: what the step set looked like when this was written. A resumed job whose step set no longer matches goes to UNDECODABLE rather than silently restarting from step one and re-running completed side effects. No other queue has to answer this, because no other queue has both step replay and payload versioning.
step_set_hash: String§crashes_by_step: HashMap<String, u32>crash quarantine step-level crash attribution
Trait Implementations§
Source§impl Clone for Checkpoint
impl Clone for Checkpoint
Source§fn clone(&self) -> Checkpoint
fn clone(&self) -> Checkpoint
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 Checkpoint
impl Debug for Checkpoint
Source§impl Default for Checkpoint
impl Default for Checkpoint
Source§impl Message for Checkpoint
impl Message for Checkpoint
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.