From 39f9cb8174202cc80323628f7876cf07ac9ab8e9 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 13 Jul 2021 16:26:20 +0000 Subject: [PATCH] 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 --- src/crimson/osd/pg.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/pg.cc b/src/crimson/osd/pg.cc index afc9ae1d841a5..6a1f101d9bdff 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); -- 2.39.5