]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
kv/RocksDBStore: fixed seek_to_last on merging iterator
authorAdam Kupczyk <akupczyk@redhat.com>
Tue, 24 Mar 2020 12:39:44 +0000 (13:39 +0100)
committerAdam Kupczyk <akupczyk@redhat.com>
Fri, 17 Apr 2020 06:55:54 +0000 (08:55 +0200)
Signed-off-by: Adam Kupczyk <akupczyk@redhat.com>
src/kv/RocksDBStore.cc

index caa1926b9f9ef591c3b94a3b1a4fcf9d6b2ad352..54134de245b6f54f27cf1994226647b5842e967b 100644 (file)
@@ -1954,7 +1954,7 @@ private:
        if (b->Valid()) {
          return false;
        } else {
-         return static_cast<void*>(a) < static_cast<void*>(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];