mirror of
https://github.com/ceph/ceph
synced 2025-01-31 07:22:56 +00:00
osd: allow RecoveryDone self-transition in RepNotRecovering
In a mixed cluster where some OSDs support the recovery reservations and some don't, the replica may be new code in RepNotRecoverying and will complete a backfill. In that case, we want to just stayin RepNotRecovering. It may also be possible to make it infer what the primary is doing even thought it is not sending recovery reservation messages, but this is much more complicated and doesn't accomplish much. Fixes: #3689 Signed-off-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
ea13ecc291
commit
ca34fc4d3c
@ -1498,7 +1498,8 @@ public:
|
||||
struct RepNotRecovering : boost::statechart::state< RepNotRecovering, ReplicaActive>, NamedState {
|
||||
typedef boost::mpl::list<
|
||||
boost::statechart::transition< RequestBackfill, RepWaitBackfillReserved >,
|
||||
boost::statechart::transition< RequestRecovery, RepWaitRecoveryReserved >
|
||||
boost::statechart::transition< RequestRecovery, RepWaitRecoveryReserved >,
|
||||
boost::statechart::transition< RecoveryDone, RepNotRecovering > // for compat with pre-reservation peers
|
||||
> reactions;
|
||||
RepNotRecovering(my_context ctx);
|
||||
void exit();
|
||||
|
Loading…
Reference in New Issue
Block a user