changeset 280:71dbb70bc4e4

db_impl: Implement record_read_sample().
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 24 Sep 2017 14:16:50 +0200
parents c2562c5e7777
children fe30cd47b37d
files src/db_impl.rs
diffstat 1 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/db_impl.rs	Sun Sep 24 14:16:38 2017 +0200
+++ b/src/db_impl.rs	Sun Sep 24 14:16:50 2017 +0200
@@ -9,7 +9,7 @@
 use filter::{BoxedFilterPolicy, InternalFilterPolicy};
 use infolog::Logger;
 use log::LogWriter;
-use key_types::{parse_internal_key, ValueType};
+use key_types::{parse_internal_key, InternalKey, ValueType};
 use memtable::MemTable;
 use options::Options;
 use snapshot::{Snapshot, SnapshotList};
@@ -84,6 +84,13 @@
         self.cstats[level].add(cs);
     }
 
+    /// Trigger a compaction based on where this key is located in the different levels.
+    fn record_read_sample<'a>(&mut self, k: InternalKey<'a>) {
+        let current = self.vset.current();
+        if current.borrow_mut().record_read_sample(k) {
+            self.maybe_do_compaction();
+        }
+    }
 
     pub fn get_snapshot(&mut self) -> Snapshot {
         self.snaps.new_snapshot(self.vset.last_seq)