]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/LogClient: fix sending dup log items
authorSage Weil <sage@redhat.com>
Tue, 12 Aug 2014 14:05:34 +0000 (07:05 -0700)
committerSage Weil <sage@redhat.com>
Tue, 12 Aug 2014 22:02:06 +0000 (15:02 -0700)
We need to skip even the most recently sent item in order to get to the
ones we haven't sent yet.

Fixes: #9080
Backport: firefly, dumpling
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 057c6808be5bc61c3f1ac2b956c1522f18411245)

src/common/LogClient.cc

index 1e290b12a23f17d94d9572fb69d54891e1b01b47..e4536c758822553e9583f8e35d2cc32f43ec8ffd 100644 (file)
@@ -124,6 +124,7 @@ bool LogClient::are_pending()
 
 Message *LogClient::_get_mon_log_message()
 {
+  assert(log_lock.is_locked());
    if (log_queue.empty())
      return NULL;
 
@@ -149,7 +150,7 @@ Message *LogClient::_get_mon_log_message()
   assert(num_unsent <= log_queue.size());
   std::deque<LogEntry>::iterator p = log_queue.begin();
   std::deque<LogEntry> o;
-  while (p->seq < last_log_sent) {
+  while (p->seq <= last_log_sent) {
     ++p;
     assert(p != log_queue.end());
   }