From: Neha Date: Fri, 14 Feb 2020 19:09:14 +0000 (+0000) Subject: osd/PeeringState: require SERVER_OCTOPUS to respond to RenewLease X-Git-Tag: v15.1.1~399^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F33339%2Fhead;p=ceph.git osd/PeeringState: require SERVER_OCTOPUS to respond to RenewLease To avoid sending pg_lease to pre-octopus OSDs during upgrades. Fixes: https://tracker.ceph.com/issues/44156 Signed-off-by: Neha Ojha --- diff --git a/src/osd/PeeringState.cc b/src/osd/PeeringState.cc index aa9e047c933..836f0d57bf9 100644 --- a/src/osd/PeeringState.cc +++ b/src/osd/PeeringState.cc @@ -1201,6 +1201,16 @@ void PeeringState::proc_lease_ack(int from, const pg_lease_ack_t& a) } } +void PeeringState::proc_renew_lease() +{ + if (!HAVE_FEATURE(upacting_features, SERVER_OCTOPUS)) { + return; + } + renew_lease(pl->get_mnow()); + send_lease(); + schedule_renew_lease(); +} + void PeeringState::recalc_readable_until() { assert(is_primary()); @@ -5845,9 +5855,7 @@ boost::statechart::result PeeringState::Active::react(const AllReplicasActivated boost::statechart::result PeeringState::Active::react(const RenewLease& rl) { DECLARE_LOCALS; - ps->renew_lease(pl->get_mnow()); - ps->send_lease(); - ps->schedule_renew_lease(); + ps->proc_renew_lease(); return discard_event(); } diff --git a/src/osd/PeeringState.h b/src/osd/PeeringState.h index 327e35eeb97..05b015f01e6 100644 --- a/src/osd/PeeringState.h +++ b/src/osd/PeeringState.h @@ -2001,6 +2001,7 @@ public: void proc_lease(const pg_lease_t& l); void proc_lease_ack(int from, const pg_lease_ack_t& la); + void proc_renew_lease(); pg_lease_ack_t get_lease_ack() { return pg_lease_ack_t(readable_until_ub_from_primary);