From: Sage Weil Date: Sun, 1 Oct 2017 20:03:22 +0000 (-0500) Subject: osd/PG: ignore RemoteReservationRejected if we are RepNotRecoverying X-Git-Tag: v13.0.1~656^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1ce235c5dd0b777223f6465e71fb7ee4befd13d8;p=ceph.git osd/PG: ignore RemoteReservationRejected if we are RepNotRecoverying The primary may send us a REJECT (meaning cancel) if recovery/backfill is preempted there. That can happen even if the recovery isn't reserved or requested here (e.g., because the primary is still waiting for the local reservation). Just ignore it and remain in RepNotRecovering. Fixes: http://tracker.ceph.com/issues/21613 Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.h b/src/osd/PG.h index d9eb6a3fd07..02c52d7dc24 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -2012,6 +2012,7 @@ public: typedef boost::mpl::list< boost::statechart::custom_reaction< RequestBackfillPrio >, boost::statechart::transition< RequestRecovery, RepWaitRecoveryReserved >, + boost::statechart::transition< RemoteReservationRejected, RepNotRecovering >, // if primary is preempted or cancels boost::statechart::transition< RecoveryDone, RepNotRecovering > // for compat with pre-reservation peers > reactions; explicit RepNotRecovering(my_context ctx);