From: Radoslaw Zarzynski Date: Tue, 13 Jul 2021 16:26:20 +0000 (+0000) Subject: crimson/osd: consider epoch_sent when ignoring old peering event. X-Git-Tag: v17.1.0~1407^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=39f9cb8174202cc80323628f7876cf07ac9ab8e9;p=ceph.git crimson/osd: consider epoch_sent when ignoring old peering event. The classical OSD does: ``` bool old_peering_evt(PGPeeringEventRef evt) { return old_peering_msg(evt->get_epoch_sent(), evt->get_epoch_requested()); } ``` ``` bool PG::old_peering_msg(epoch_t reply_epoch, epoch_t query_epoch) { if (auto last_reset = get_last_peering_reset(); last_reset > reply_epoch || last_reset > query_epoch) { dout(10) << "old_peering_msg reply_epoch " << reply_epoch << " query_epoch " << query_epoch << " last_peering_reset " << last_reset << dendl; return true; } return false; } ``` See also: https://gist.github.com/rzarzynski/e60750c279ae9d234728b0b199562c40#gistcomment-3808289. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index afc9ae1d841..6a1f101d9bd 100644 --- a/src/crimson/osd/pg.cc +++ b/src/crimson/osd/pg.cc @@ -463,7 +463,8 @@ seastar::future<> PG::read_state(crimson::os::FuturizedStore* store) void PG::do_peering_event( PGPeeringEvent& evt, PeeringCtx &rctx) { - if (peering_state.pg_has_reset_since(evt.get_epoch_requested())) { + if (peering_state.pg_has_reset_since(evt.get_epoch_requested()) || + peering_state.pg_has_reset_since(evt.get_epoch_sent())) { logger().debug("{} ignoring {} -- pg has reset", __func__, evt.get_desc()); } else { logger().debug("{} handling {} for pg: {}", __func__, evt.get_desc(), pgid);