]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/scheduler: fix unittest_mclock_scheduler failed 59035/head
authorzhangjianwei2 <zhangjianwei2_yewu@cmss.chinamobile.com>
Fri, 19 Jul 2024 01:00:01 +0000 (09:00 +0800)
committerSridhar Seshasayee <sseshasa@redhat.com>
Tue, 6 Aug 2024 04:07:22 +0000 (09:37 +0530)
when unittest_mclock_scheduler,
dead loop in PerfCountersCollectionImpl::add()

Fixes: https://tracker.ceph.com/issues/66758
Signed-off-by: zhangjianwei2 <zhangjianwei2@cmss.chinamobile.com>
(cherry picked from commit 16b4a8929411914972a32ab2586bcbcb0327ec45)

src/osd/scheduler/mClockScheduler.cc
src/osd/scheduler/mClockScheduler.h
src/test/osd/TestMClockScheduler.cc

index 7efa46dacf226f8d2addaa89879ea325acf050b2..a79c8e10758d5df0e0aba1edae67b0022e13a4ed 100644 (file)
@@ -129,6 +129,7 @@ mClockScheduler::mClockScheduler(CephContext *cct,
     is_rotational(is_rotational),
     cutoff_priority(cutoff_priority),
     monc(monc),
+    logger(nullptr),
     scheduler(
       std::bind(&mClockScheduler::ClientRegistry::get_info,
                 &client_registry,
@@ -142,6 +143,7 @@ mClockScheduler::mClockScheduler(CephContext *cct,
   set_config_defaults_from_profile();
   client_registry.update_from_config(
     cct->_conf, osd_bandwidth_capacity_per_shard);
+
   if (init_perfcounter) {
     _init_logger();
   }
@@ -697,6 +699,7 @@ mClockScheduler::~mClockScheduler()
 {
   cct->_conf.remove_observer(this);
   if (logger) {
+    cct->get_perfcounters_collection()->remove(logger);
     delete logger;
     logger = nullptr;
   }
index 839ae35bdfb88fc77409095fe52000eebc027e20..bae80202f8a91d451b9331407754a35d7c484446 100644 (file)
@@ -108,7 +108,7 @@ class mClockScheduler : public OpScheduler, md_config_obs_t {
   const bool is_rotational;
   const unsigned cutoff_priority;
   MonClient *monc;
-  PerfCounters *logger = nullptr;
+  PerfCounters *logger;
 
   /**
    * osd_bandwidth_cost_per_io
index 1499493159bb1c4fefb8016636fd312330245ade..898817bb4c26efa6aa7a8332449eb5b1fafc059b 100644 (file)
@@ -33,13 +33,6 @@ public:
   bool is_rotational;
   unsigned cutoff_priority;
   MonClient *monc;
-  /*
-   * FIXME:
-   * init_perfcounter = false
-   * src/common: dead loop in PerfCountersCollectionImpl::add()
-   * when adding the same logger_ptr to logger_collection.
-   * see https://tracker.ceph.com/issues/66758.
-   */
   bool init_perfcounter;
   mClockScheduler q;
 
@@ -54,7 +47,7 @@ public:
     is_rotational(false),
     cutoff_priority(12),
     monc(nullptr),
-    init_perfcounter(false),
+    init_perfcounter(true),
     q(g_ceph_context, whoami, num_shards, shard_id, is_rotational,
       cutoff_priority, monc, init_perfcounter),
     client1(1001),