changeset 366:8ae87daebe4a

version/version_set: Move two methods to Version
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 08 Oct 2017 11:46:05 +0200
parents f7df71486099
children 821c6108558f
files src/db_impl.rs src/version.rs src/version_set.rs
diffstat 3 files changed, 25 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/db_impl.rs	Sat Oct 07 21:36:47 2017 +0200
+++ b/src/db_impl.rs	Sun Oct 08 11:46:05 2017 +0200
@@ -667,6 +667,11 @@
     }
 
     fn do_compaction_work(&mut self, cs: &mut CompactionState) -> Result<()> {
+        {
+            let current = self.vset.borrow().current();
+            assert!(current.borrow().num_level_files(cs.compaction.level()) > 0);
+            assert!(cs.builder.is_none());
+        }
         let start_ts = self.opt.env.micros();
         log!(self.opt.log,
              "Compacting {} files at L{} and {} files at L{}",
@@ -674,8 +679,6 @@
              cs.compaction.level(),
              cs.compaction.num_inputs(1),
              cs.compaction.level() + 1);
-        assert!(self.vset.borrow().num_level_files(cs.compaction.level()) > 0);
-        assert!(cs.builder.is_none());
 
         let mut input = self.vset.borrow().make_input_iterator(&cs.compaction);
         input.seek_to_first();
--- a/src/version.rs	Sat Oct 07 21:36:47 2017 +0200
+++ b/src/version.rs	Sun Oct 08 11:46:05 2017 +0200
@@ -44,6 +44,17 @@
         }
     }
 
+    pub fn num_level_bytes(&self, l: usize) -> usize {
+        assert!(l < NUM_LEVELS);
+        total_size(self.files[l].iter())
+    }
+
+    pub fn num_level_files(&self, l: usize) -> usize {
+        assert!(l < NUM_LEVELS);
+        self.files[l].len()
+    }
+
+
     /// get returns the value for the specified key using the persistent tables contained in this
     /// Version.
     #[allow(unused_assignments)]
--- a/src/version_set.rs	Sat Oct 07 21:36:47 2017 +0200
+++ b/src/version_set.rs	Sun Oct 08 11:46:05 2017 +0200
@@ -210,18 +210,6 @@
         self.current.as_ref().unwrap().clone()
     }
 
-    fn num_level_bytes(&self, l: usize) -> usize {
-        assert!(l < NUM_LEVELS);
-        assert!(self.current.is_some());
-        total_size(self.current.as_ref().unwrap().borrow().files[l].iter())
-    }
-
-    pub fn num_level_files(&self, l: usize) -> usize {
-        assert!(l < NUM_LEVELS);
-        assert!(self.current.is_some());
-        self.current.as_ref().unwrap().borrow().files[l].len()
-    }
-
     pub fn add_version(&mut self, v: Version) {
         let sv = share(v);
         self.current = Some(sv.clone());
@@ -1040,14 +1028,17 @@
         // live_files()
         assert_eq!(9, vs.live_files().len());
         assert!(vs.live_files().contains(&3));
+
+        let v = vs.current();
+        let v = v.borrow();
         // num_level_bytes()
-        assert_eq!(434, vs.num_level_bytes(0));
-        assert_eq!(651, vs.num_level_bytes(1));
-        assert_eq!(468, vs.num_level_bytes(2));
+        assert_eq!(434, v.num_level_bytes(0));
+        assert_eq!(651, v.num_level_bytes(1));
+        assert_eq!(468, v.num_level_bytes(2));
         // num_level_files()
-        assert_eq!(2, vs.num_level_files(0));
-        assert_eq!(3, vs.num_level_files(1));
-        assert_eq!(2, vs.num_level_files(2));
+        assert_eq!(2, v.num_level_files(0));
+        assert_eq!(3, v.num_level_files(1));
+        assert_eq!(2, v.num_level_files(2));
         // new_file_number()
         assert_eq!(2, vs.new_file_number());
         assert_eq!(3, vs.new_file_number());