]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls::journal: treat empty commit position as minimal
authorMykola Golub <mgolub@mirantis.com>
Wed, 25 May 2016 11:51:43 +0000 (14:51 +0300)
committerJason Dillaman <dillaman@redhat.com>
Tue, 31 May 2016 15:46:43 +0000 (11:46 -0400)
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
(cherry picked from commit 16846e8085b0c594f065322a768e6dfcbd5d2444)

src/cls/journal/cls_journal.cc

index 2d36296f1885981ed6e2986619fd8b19f4a08d9a..2682926d57a4e35ca9e5d9200973a15a18d39118 100644 (file)
@@ -279,16 +279,18 @@ int find_min_commit_position(cls_method_context_t hctx,
     for(std::set<cls::journal::Client>::iterator it = batch.begin();
         it != batch.end(); ++it) {
       cls::journal::ObjectSetPosition object_set_position = (*it).commit_position;
-      if (!object_set_position.object_positions.empty()) {
-        cls::journal::ObjectPosition first = object_set_position.object_positions.front();
-
-        // least tag_tid (or least entry_tid for matching tag_tid)
-        if (!valid || (tag_tid > first.tag_tid) || ((tag_tid == first.tag_tid) && (entry_tid > first.entry_tid))) {
-          tag_tid = first.tag_tid;
-          entry_tid = first.entry_tid;
-          *minset = cls::journal::ObjectSetPosition(object_set_position);
-          valid = true;
-        }
+      if (object_set_position.object_positions.empty()) {
+       *minset = cls::journal::ObjectSetPosition();
+       break;
+      }
+      cls::journal::ObjectPosition first = object_set_position.object_positions.front();
+
+      // least tag_tid (or least entry_tid for matching tag_tid)
+      if (!valid || (tag_tid > first.tag_tid) || ((tag_tid == first.tag_tid) && (entry_tid > first.entry_tid))) {
+       tag_tid = first.tag_tid;
+       entry_tid = first.entry_tid;
+       *minset = cls::journal::ObjectSetPosition(object_set_position);
+       valid = true;
       }
     }