From acc873987734d9b95f62b06cdaa5ea01d342e2dd Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Fri, 12 Apr 2024 14:01:16 +0800 Subject: [PATCH] crimson/osd/recovery_backends: discard outdated recovery ops Fixes: https://tracker.ceph.com/issues/65453 Signed-off-by: Xuehan Xu (cherry picked from commit 234f41c33917e921b53c091af7b3fcbf0f141b4a) --- src/crimson/osd/pg.h | 2 +- src/crimson/osd/recovery_backend.cc | 5 +---- src/crimson/osd/replicated_recovery_backend.cc | 5 +++++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index a81374be6bc6f..c0badee72b7d3 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -740,7 +740,7 @@ public: template bool can_discard_replica_op(const MsgType& m) const { - return can_discard_replica_op(m, m.map_epoch); + return can_discard_replica_op(m, m.get_map_epoch()); } private: diff --git a/src/crimson/osd/recovery_backend.cc b/src/crimson/osd/recovery_backend.cc index 1c55b9c6c618b..7923ad24a4263 100644 --- a/src/crimson/osd/recovery_backend.cc +++ b/src/crimson/osd/recovery_backend.cc @@ -162,10 +162,7 @@ RecoveryBackend::handle_backfill_remove( { logger().debug("{} m.ls={}", __func__, m.ls); assert(m.get_type() == MSG_OSD_PG_BACKFILL_REMOVE); - if (pg.can_discard_replica_op(m)) { - logger().debug("{}: discarding {}", __func__, m); - return seastar::now(); - } + ObjectStore::Transaction t; for ([[maybe_unused]] const auto& [soid, ver] : m.ls) { // TODO: the reserved space management. PG::try_reserve_recovery_space(). diff --git a/src/crimson/osd/replicated_recovery_backend.cc b/src/crimson/osd/replicated_recovery_backend.cc index a62cb793272d5..6a5af7a6d5e94 100644 --- a/src/crimson/osd/replicated_recovery_backend.cc +++ b/src/crimson/osd/replicated_recovery_backend.cc @@ -1307,6 +1307,11 @@ ReplicatedRecoveryBackend::handle_recovery_op( Ref m, crimson::net::ConnectionXcoreRef conn) { + if (pg.can_discard_replica_op(*m)) { + logger().debug("{}: discarding {}", __func__, *m); + return seastar::now(); + } + switch (m->get_header().type) { case MSG_OSD_PG_PULL: return handle_pull(boost::static_pointer_cast(m)); -- 2.39.5