pub struct IntentJournal {
pub flush_uuid: String,
pub keys: Vec<String>,
pub recent_uuids: Vec<String>,
pub installed_etag: Option<String>,
pub installed_foreign: Vec<ForeignChange>,
pub declared_deletes: Vec<String>,
}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.
installed_foreign: Vec<ForeignChange>The other writers’ changes the install at installed_etag carried
into the manifest, journalled with that etag in the same write.
Step 7 moves them into the foreign queue before the merge base
passes them. A restart before it leaves the merge base at the
installed document (above), where they read as integrated: the
tree would never receive them and remote.seq would say there is
no news. The next consume re-queues whatever is still here.
declared_deletes: Vec<String>Paths whose DECLARED removal this barrier unlinked and is about to cite out (delete/rename design §4). Journalled before the window commitment, so a crash after the cell has been told and before the manifest CAS still produces ONE generation without them, instead of handing the deletion to the two-scan path and citing a file the tree no longer has for a barrier.
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