in merkledb/src/merkledb_debug.rs [146:178]
fn check_parent_invariant_basic(&self) -> bool {
let mut ret = true;
for i in 0..self.get_sequence_number() {
if let Some(node) = self.find_node_by_id(i as MerkleNodeId) {
let nodeattr = self.node_attributes(node.id()).unwrap();
let cas_parent = nodeattr.cas_parent();
if cas_parent > 0 {
if let Some(parent) = self.find_node_by_id(cas_parent) {
if !parent.children().iter().any(|x| x.0 == node.id()) {
eprintln!("CAS Parent node of {node:?} has no children. Parent: {parent:?}");
ret = false;
}
} else {
eprintln!("CAS Parent node of {node:?} not found, Attr: {nodeattr:?}");
ret = false;
}
}
let file_parent = nodeattr.file_parent();
if file_parent > 0 {
if let Some(parent) = self.find_node_by_id(file_parent) {
if !parent.children().iter().any(|x| x.0 == node.id()) {
eprintln!("FILE Parent node of {node:?} has no children. Parent: {parent:?}");
ret = false;
}
} else {
eprintln!("FILE Parent node of {node:?} not found, Attr: {nodeattr:?}");
ret = false;
}
}
}
}
ret
}