From: Adam Kupczyk Date: Tue, 24 Mar 2020 12:39:44 +0000 (+0100) Subject: kv/RocksDBStore: fixed seek_to_last on merging iterator X-Git-Tag: v16.1.0~2499^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ca5ca25c56e9d07d62d24333d13e5bfca7e08719;p=ceph.git kv/RocksDBStore: fixed seek_to_last on merging iterator Signed-off-by: Adam Kupczyk --- diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc index caa1926b9f9e..54134de245b6 100644 --- a/src/kv/RocksDBStore.cc +++ b/src/kv/RocksDBStore.cc @@ -1954,7 +1954,7 @@ private: if (b->Valid()) { return false; } else { - return static_cast(a) < static_cast(b); + return false; } } } @@ -1998,9 +1998,19 @@ public: return -1; } } - for (size_t i = 0; i < iters.size(); i++) { - if (keyless(iters[0], iters[i])) { - swap(iters[0], iters[i]); + for (size_t i = 1; i < iters.size(); i++) { + if (iters[0]->Valid()) { + if (iters[i]->Valid()) { + if (keyless(iters[0], iters[i])) { + swap(iters[0], iters[i]); + } + } else { + //iters[i] empty + } + } else { + if (iters[i]->Valid()) { + swap(iters[0], iters[i]); + } } //it might happen that cf was empty if (iters[i]->Valid()) { @@ -2089,7 +2099,7 @@ public: iters[0]->Prev(); ceph_assert(!iters[0]->Valid()); } - return -1; + return 0; } //2,3 rocksdb::Iterator* highest = prev_done[0];