]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: MonitorDBStore: get_next_key() only if prefix matches
authorJoao Eduardo Luis <joao@suse.de>
Wed, 27 May 2015 21:28:49 +0000 (22:28 +0100)
committerJoao Eduardo Luis <joao@redhat.com>
Mon, 27 Jul 2015 21:04:27 +0000 (22:04 +0100)
get_next_key() had a bug in which we would always return the first key
from the iterator, regardless of whether its prefix had been specified
to the iterator.

Fixes: #11786
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
(cherry picked from commit 2cc7aee1abe40453093306c8fef2312b650dff5d)

src/mon/MonitorDBStore.h

index 1576db77d3c3d87545eb03769afb43729e9533a0..ff97878947c5ec11acc8e5d79b85f5f002048fa6 100644 (file)
@@ -390,11 +390,13 @@ class MonitorDBStore
 
     virtual pair<string,string> get_next_key() {
       assert(iter->valid());
-      pair<string,string> r = iter->raw_key();
-      do {
-       iter->next();
-      } while (iter->valid() && sync_prefixes.count(iter->raw_key().first) == 0);
-      return r;
+
+      for (; iter->valid(); iter->next()) {
+        pair<string,string> r = iter->raw_key();
+        if (sync_prefixes.count(r.first) > 0)
+          return r;
+      }
+      return pair<string,string>();
     }
 
     virtual bool _is_valid() {