If mon store.db very big, scrub will be a very
time-consuming operation.
Fixes: https://tracker.ceph.com/issues/66873
Signed-off-by: Yite Gu <yitegu0@gmail.com>
if (scrub_result.size() == quorum.size()) {
scrub_check_results();
scrub_result.clear();
- if (scrub_state->finished)
+ if (scrub_state->finished) {
+ const utime_t lat = ceph_clock_now() - scrub_state->start;
+ dout(10) << __func__ << " mon scrub latency: " << lat << dendl;
scrub_finish();
- else
+ } else {
scrub();
+ }
}
}
break;
struct ScrubState {
std::pair<std::string,std::string> last_key; ///< last scrubbed key
bool finished;
+ const utime_t start;
- ScrubState() : finished(false) { }
+ ScrubState() : finished(false),
+ start(ceph_clock_now()) { }
virtual ~ScrubState() { }
};
std::shared_ptr<ScrubState> scrub_state; ///< keeps track of current scrub