]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: allow blocking trim if option is enabled
authorJoao Eduardo Luis <joao@suse.de>
Mon, 4 Dec 2017 23:38:31 +0000 (23:38 +0000)
committerJoao Eduardo Luis <joao@suse.de>
Fri, 6 Apr 2018 03:18:22 +0000 (04:18 +0100)
We need to allow blocking osdmap trimming to test osdmap pruning.

Signed-off-by: Joao Eduardo Luis <joao@suse.de>
src/common/options.cc
src/mon/Monitor.cc
src/mon/OSDMonitor.cc

index c9ddfa9c7121d3b4a0b0380ec8bd1f52c9afc7b9..bd1591efacf50b62cffbabe42e3fa27013da5c4a 100644 (file)
@@ -1616,6 +1616,14 @@ std::vector<Option> get_global_options() {
         "to run on production systems, or would only be relevant while "
         "testing or debugging."),
 
+    Option("mon_debug_block_osdmap_trim", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .set_description("Block OSDMap trimming while the option is enabled.")
+    .set_long_description(
+        "Blocking OSDMap trimming may be quite helpful to easily reproduce "
+        "states in which the monitor keeps (hundreds of) thousands of "
+        "osdmaps."),
+
     Option("mon_debug_deprecated_as_obsolete", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(false)
     .set_description(""),
index 0297addc545d9bc5adb5d923071af532516cfa0c..d25744bcc02de9ba22693a1520d39c18ea29e619 100644 (file)
@@ -456,6 +456,7 @@ const char** Monitor::get_tracked_conf_keys() const
     "mon_osdmap_full_prune_txsize",
     // debug options - observed, not handled
     "mon_debug_extra_checks",
+    "mon_debug_block_osdmap_trim",
     NULL
   };
   return KEYS;
index 7ef7301ea183044fec262e3ef377d14535d4831e..4e8f08d57d42082849ad2d8e496224f755f34f3a 100644 (file)
@@ -1510,6 +1510,15 @@ version_t OSDMonitor::get_trim_to() const
       return 0;
     }
   }
+
+  if (g_conf->get_val<bool>("mon_debug_block_osdmap_trim")) {
+    dout(0) << __func__
+            << " blocking osdmap trim"
+               " ('mon_debug_block_osdmap_trim' set to 'true')"
+            << dendl;
+    return 0;
+  }
+
   {
     epoch_t floor = get_min_last_epoch_clean();
     dout(10) << " min_last_epoch_clean " << floor << dendl;