]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: add debugging for trimming methods
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 14 Jul 2021 19:04:03 +0000 (12:04 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 29 Jul 2021 15:57:34 +0000 (08:57 -0700)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 9297690e9a4158e1ba3a1bdea924e86b586a390c)

src/mon/MDSMonitor.cc
src/mon/PaxosService.cc

index 9b07ee1d1a020b12a12e63d0543c190e17c1c3dd..69f330146547eca5f039aad4fb72a7ef20a37da1 100644 (file)
@@ -299,8 +299,11 @@ version_t MDSMonitor::get_trim_to() const
   unsigned max = g_conf()->mon_max_mdsmap_epochs;
   version_t last = get_last_committed();
 
-  if (last - get_first_committed() > max && floor < last - max)
-    return last - max;
+  if (last - get_first_committed() > max && floor < last - max) {
+    floor = last-max;
+  }
+
+  dout(20) << __func__ << " = " << floor << dendl;
   return floor;
 }
 
index 33059f696bbe37ed31d6848666216d0fefe22a79..0a6a9a9ea70f6afd96e8ed0da4ffa9e3e565d88e 100644 (file)
@@ -377,14 +377,17 @@ void PaxosService::maybe_trim()
   if (!is_writeable())
     return;
 
+  const version_t first_committed = get_first_committed();
   version_t trim_to = get_trim_to();
-  if (trim_to < get_first_committed()) {
+  dout(20) << __func__ << " " << first_committed << "~" << trim_to << dendl;
+
+  if (trim_to < first_committed) {
     dout(10) << __func__ << " trim_to " << trim_to << " < first_committed "
-            << get_first_committed() << dendl;
+            << first_committed << dendl;
     return;
   }
 
-  version_t to_remove = trim_to - get_first_committed();
+  version_t to_remove = trim_to - first_committed;
   const version_t trim_min = g_conf().get_val<version_t>("paxos_service_trim_min");
   if (trim_min > 0 &&
       to_remove < trim_min) {
@@ -393,13 +396,13 @@ void PaxosService::maybe_trim()
     return;
   }
 
-  to_remove = [to_remove, this] {
+  to_remove = [to_remove, trim_to, this] {
     const version_t trim_max = g_conf().get_val<version_t>("paxos_service_trim_max");
     if (trim_max == 0 || to_remove < trim_max) {
       return to_remove;
     }
     if (to_remove < trim_max * 1.5) {
-      dout(10) << __func__ << " trim to " << get_trim_to() << " would only trim " << to_remove
+      dout(10) << __func__ << " trim to " << trim_to << " would only trim " << to_remove
              << " > paxos_service_trim_max, limiting to " << trim_max
              << dendl;
       return trim_max;
@@ -412,11 +415,11 @@ void PaxosService::maybe_trim()
       return new_trim_max;
     }
   }();
-  trim_to = get_first_committed() + to_remove;
+  trim_to = first_committed + to_remove;
 
   dout(10) << __func__ << " trimming to " << trim_to << ", " << to_remove << " states" << dendl;
   MonitorDBStore::TransactionRef t = paxos.get_pending_transaction();
-  trim(t, get_first_committed(), trim_to);
+  trim(t, first_committed, trim_to);
   put_first_committed(t, trim_to);
   cached_first_committed = trim_to;