From 9b4db8b4f0e2e66df76e6284e828431413cf467b Mon Sep 17 00:00:00 2001 From: efyang Date: Sat, 28 Oct 2017 16:59:00 -0500 Subject: [PATCH] Fix iterator issues --- util/kvdb-rocksdb/src/lib.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/util/kvdb-rocksdb/src/lib.rs b/util/kvdb-rocksdb/src/lib.rs index 69b8164d6..cae3b6be4 100644 --- a/util/kvdb-rocksdb/src/lib.rs +++ b/util/kvdb-rocksdb/src/lib.rs @@ -515,13 +515,14 @@ impl Database { match *self.db.read() { Some(DBAndColumns { ref db, ref cfs }) => { let overlay = &self.overlay.read()[Self::to_overlay_column(col)]; - let overlay_data = overlay.iter() - .filter_map(|(k, v)| match v { - &KeyState::Insert(ref value) | - &KeyState::InsertCompressed(ref value) => + let mut overlay_data = overlay.iter() + .filter_map(|(k, v)| match *v { + KeyState::Insert(ref value) | + KeyState::InsertCompressed(ref value) => Some((k.clone().into_vec().into_boxed_slice(), value.clone().into_vec().into_boxed_slice())), - &KeyState::Delete => None, + KeyState::Delete => None, }).collect::>(); + overlay_data.sort(); let iter = col.map_or_else( || db.iterator_opt(IteratorMode::Start, &self.read_opts),