diff --git a/store/src/sumtree.rs b/store/src/sumtree.rs index 2420c808..d3a60d24 100644 --- a/store/src/sumtree.rs +++ b/store/src/sumtree.rs @@ -383,10 +383,9 @@ where /// sync'd size. pub fn unpruned_size(&self) -> io::Result { let total_shift = self.pruned_nodes.get_shift(::std::u64::MAX).unwrap(); - let rm_len = self.remove_log.len() as u64; let record_len = 32 + T::sum_len() as u64; let sz = self.hashsum_file.size()?; - Ok(sz / record_len + rm_len + total_shift) + Ok(sz / record_len + total_shift) } /// Syncs all files to disk. A call to sync is required to ensure all the diff --git a/store/tests/sumtree.rs b/store/tests/sumtree.rs index 310ec02d..d0f2d36c 100644 --- a/store/tests/sumtree.rs +++ b/store/tests/sumtree.rs @@ -129,6 +129,7 @@ fn sumtree_reload() { backend.sync().unwrap(); backend.check_compact(1).unwrap(); backend.sync().unwrap(); + assert_eq!(backend.unpruned_size().unwrap(), mmr_size); // prune some more to get rm log data { @@ -136,11 +137,13 @@ fn sumtree_reload() { pmmr.prune(5, 1).unwrap(); } backend.sync().unwrap(); + assert_eq!(backend.unpruned_size().unwrap(), mmr_size); } // create a new backend and check everything is kosher { let mut backend = store::sumtree::PMMRBackend::new(data_dir).unwrap(); + assert_eq!(backend.unpruned_size().unwrap(), mmr_size); { let pmmr = PMMR::at(&mut backend, mmr_size); assert_eq!(root, pmmr.root());