]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: warn about too many dups when loading PGLog
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 11 Jul 2022 14:08:32 +0000 (14:08 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 9 Aug 2022 09:58:47 +0000 (09:58 +0000)
Fixes: https://tracker.ceph.com/issues/53729
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/osd/PGLog.h

index 9abfb3271e04dbe253aa9d5ccb2ff76d19f6fa07..a3f14c59f6b47e1be0dc2cd8672889c27bbaab67 100644 (file)
@@ -1439,6 +1439,7 @@ public:
     missing.may_include_deletes = false;
     std::list<pg_log_entry_t> entries;
     std::list<pg_log_dup_t> dups;
+    const auto NUM_DUPS_WARN_THRESHOLD = 2*cct->_conf->osd_pg_log_dups_tracked;
     if (p) {
       using ceph::decode;
       for (p->seek_to_first(); p->valid() ; p->next()) {
@@ -1475,6 +1476,14 @@ public:
          if (!dups.empty()) {
            ceph_assert(dups.back().version < dup.version);
          }
+         if (dups.size() == NUM_DUPS_WARN_THRESHOLD) {
+           ldpp_dout(dpp, 0) << "read_log_and_missing WARN num of dups exceeded "
+                             << NUM_DUPS_WARN_THRESHOLD << "."
+                             << " You can be hit by THE DUPS BUG"
+                             << " https://tracker.ceph.com/issues/53729."
+                             << " Consider ceph-objectstore-tool --op trim-pg-log-dups"
+                             << dendl;
+         }
          dups.push_back(dup);
        } else {
          pg_log_entry_t e;