diff --git a/src/capnp_store.rs b/src/capnp_store.rs index d48cb5a..d32716f 100644 --- a/src/capnp_store.rs +++ b/src/capnp_store.rs @@ -356,6 +356,7 @@ impl StoreView for Store { fn for_each_relation(&self, mut f: F) { for rel in &self.relations { + if rel.deleted { continue; } f(&rel.source_key, &rel.target_key, rel.strength, rel.rel_type); } } @@ -431,6 +432,7 @@ impl StoreView for MmapView { fn for_each_relation(&self, mut f: F) { let snap = self.snapshot(); for rel in snap.relations.iter() { + if rel.deleted { continue; } let rt = match rel.rel_type { ArchivedRelationType::Link => RelationType::Link, ArchivedRelationType::Causal => RelationType::Causal, @@ -752,7 +754,7 @@ impl Store { fn save_snapshot_inner(&self) -> Result<(), String> { let snap = Snapshot { nodes: self.nodes.clone(), - relations: self.relations.clone(), + relations: self.relations.iter().filter(|r| !r.deleted).cloned().collect(), gaps: self.gaps.clone(), params: self.params.clone(), }; @@ -1485,6 +1487,9 @@ impl Store { self.append_relations(&pruned_rels)?; } + // Remove deleted relations from in-memory vec so save() is clean + self.relations.retain(|r| !r.deleted); + Ok((hubs_capped, to_delete.len())) }