Mercurial > lbo > hg > leveldb-rs
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)