]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: move the destructor of OpsExecuter to ops_executer.cc
authorZhang Song <zhangsong02@qianxin.com>
Wed, 19 Feb 2025 09:30:15 +0000 (17:30 +0800)
committerZhang Song <zhangsong02@qianxin.com>
Wed, 19 Feb 2025 10:21:11 +0000 (18:21 +0800)
Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
src/crimson/osd/ops_executer.cc
src/crimson/osd/ops_executer.h

index cbc35c21a041927cc0b1451bcd594d8f0121f008..32b2cbcb940f45794ac3ffdd7ba23dac0f740298 100644 (file)
@@ -32,6 +32,15 @@ namespace {
 
 namespace crimson::osd {
 
+// workaround for clang 19
+// when a .cc file includes ops_executer.h but doesn't include the pg.h,
+// it seems that clang++-19 can't retrieve the type hierarchy of PG, so
+// that the destructor of boost::intrusive_ptr<PG> could not find the hidden
+// friend of intrusive_ptr_release.
+// Moving the destructor invocation of intrusive_ptr to this file could
+// solve this issue.
+OpsExecuter::~OpsExecuter() {}
+
 OpsExecuter::call_ierrorator::future<> OpsExecuter::do_op_call(OSDOp& osd_op)
 {
   std::string cname, mname;
index f5554bd69191ff79c91866da5dd9f6401e2848f2..c70d2a99b1b80c4e72ebde013f98456af2f5749f 100644 (file)
@@ -383,6 +383,8 @@ public:
         snapc) {
   }
 
+  ~OpsExecuter();
+
   template <class Func>
   struct RollbackHelper;