return scrub_level_t::shallow;
}
+ // abort an ongoing scrub, if it's of the lowest priority
+ // and stuck in replica reservations.
+ m_fsm->process_event(AbortIfReserving{});
+
// update the relevant SchedTarget (either shallow or deep). Set its urgency
// to either operator_requested or must_repair. Push it into the queue
auto& trgt = m_scrub_job->get_target(scrub_level);
/// all replicas have granted our reserve request
MEV(RemotesReserved)
+/// abort the scrub session, if in ReservingReplicas state
+/// (used when the operator issues a scrub request, and we no longer
+/// need the reservations)
+MEV(AbortIfReserving)
+
/// initiate a new scrubbing session (relevant if we are a Primary)
MEV(StartScrub)
using reactions = mpl::list<
sc::custom_reaction<ReplicaGrant>,
sc::custom_reaction<ReplicaReject>,
+ sc::transition<AbortIfReserving, PrimaryIdle>,
sc::transition<RemotesReserved, ActiveScrubbing>>;
ScrubTimePoint entered_at = ScrubClock::now();