fn check_parent_invariant_basic()

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
    }