pub struct IntentJournal {
pub flush_uuid: String,
pub keys: Vec<String>,
pub recent_uuids: Vec<String>,
pub installed_etag: Option<String>,
}Expand description
The intent journal written BEFORE uploads: which keys this barrier
will touch and under which flush_uuid, so a restarted container can
recognize its own crashed/torn PUT at the 412 (AdoptOwn) instead of
mistaking it for a foreign write. recent_uuids keeps the last few
barriers’ uuids for the same reason.
Fields§
§flush_uuid: String§keys: Vec<String>§recent_uuids: Vec<String>§installed_etag: Option<String>The ETag of the manifest document THIS workspace last installed, written immediately after the CAS.
The merge base (Baseline::inst_base) and the baseline are both
rewritten at step 7, after the CAS and after the GC deletes. A
container restart in that window leaves the bucket holding a
document we wrote and our persisted merge base one generation
behind it — so at the next merge our own entries read as foreign
changes, delete/modify resolves conservatively against the
agent’s own delete, and the path is queued into the inbox as a
conflict nobody else ever touched. Recording the installed ETag
costs one small local write and restores exactly what step 7 was
going to say: if the bucket is still at this document, the merge
base IS this document.
Trait Implementations§
Source§impl Clone for IntentJournal
impl Clone for IntentJournal
Source§fn clone(&self) -> IntentJournal
fn clone(&self) -> IntentJournal
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more