From: Samuel Just Date: Sat, 20 May 2023 00:34:45 +0000 (-0700) Subject: crimson/osd/heartbeat: maintain Session::projected_epoch correctly in maybe_share_osdmap X-Git-Tag: v19.0.0~1104^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=29a1deb50488b3a1c32040804296e6619d605133;p=ceph.git crimson/osd/heartbeat: maintain Session::projected_epoch correctly in maybe_share_osdmap Previously, we only updated projected_map to the value sent by the peer. This patch simplifies the end by removing an unnecessary guard and updating projected_epoch before call,ing send_incremental_map_to_osd. Fixes: https://tracker.ceph.com/issues/61304 Signed-off-by: Samuel Just --- diff --git a/src/crimson/osd/heartbeat.cc b/src/crimson/osd/heartbeat.cc index bba53ef38f9b..be6f60008518 100644 --- a/src/crimson/osd/heartbeat.cc +++ b/src/crimson/osd/heartbeat.cc @@ -326,16 +326,15 @@ seastar::future<> Heartbeat::maybe_share_osdmap( return seastar::now(); } - logger().debug("{} peer {} projected_epoch is {} while osdmap is {}", - __func__ , from, m->map_epoch, current_osdmap_epoch); - if (current_osdmap_epoch > m->map_epoch) { - logger().debug("{} sharing osdmap epoch of {} with peer {}", - __func__, current_osdmap_epoch, from); - // Peer's newest map is m->map_epoch. Therfore it misses - // the osdmaps in the range of `m->map_epoch` to `current_osdmap_epoch`. - return service.send_incremental_map_to_osd(from, m->map_epoch); - } - return seastar::now(); + const epoch_t send_from = peer.get_projected_epoch(); + logger().debug("{} sending peer {} peer maps from projected epoch {} through " + "local osdmap epoch {}", + __func__, + from, + send_from, + current_osdmap_epoch); + peer.set_projected_epoch(current_osdmap_epoch); + return service.send_incremental_map_to_osd(from, send_from); } seastar::future<> Heartbeat::handle_reply(crimson::net::ConnectionRef conn,