]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd/pg: tolerate NULL PG::pglog_based_recovery_op when
authorXuehan Xu <xuxuehan@qianxin.com>
Wed, 3 Sep 2025 07:45:25 +0000 (15:45 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Fri, 5 Sep 2025 06:42:48 +0000 (14:42 +0800)
cancelling pglog based recovery

The finish of pglog based recovery and the pg turning Clean are two
asynchronous events, other events like DeferRecovery should tolerate
this case.

Fixes: https://tracker.ceph.com/issues/72844
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/osd/pg.cc

index c7ae18d2f252bd0785104e2918fd67625450697c..b9bcfebd022faf70028e89e574825531668a26d8 100644 (file)
@@ -1744,9 +1744,10 @@ void PG::reset_pglog_based_recovery_op() {
 }
 
 void PG::cancel_pglog_based_recovery_op() {
-  ceph_assert(pglog_based_recovery_op);
-  pglog_based_recovery_op->cancel();
-  reset_pglog_based_recovery_op();
+  if (pglog_based_recovery_op) {
+    pglog_based_recovery_op->cancel();
+    reset_pglog_based_recovery_op();
+  }
 }
 
 void PG::C_PG_FinishRecovery::finish(int r) {