{
ldout(cct, 10) << __func__ << dendl;
monc_lock.Lock();
+ stopping = true;
while (!version_requests.empty()) {
version_requests.begin()->second->context->complete(-ECANCELED);
ldout(cct, 20) << __func__ << " canceling and discarding version request "
}
monc_lock.Lock();
timer.shutdown();
-
+ stopping = false;
monc_lock.Unlock();
}
Context *onfinish)
{
std::lock_guard l(monc_lock);
+ if (!initialized || stopping) {
+ onfinish->complete(-ECANCELED);
+ return;
+ }
MonCommand *r = new MonCommand(++last_mon_command_tid);
r->cmd = cmd;
r->inbl = inbl;
Context *onfinish)
{
std::lock_guard l(monc_lock);
+ if (!initialized || stopping) {
+ onfinish->complete(-ECANCELED);
+ return;
+ }
MonCommand *r = new MonCommand(++last_mon_command_tid);
r->target_name = mon_name;
r->cmd = cmd;
Context *onfinish)
{
std::lock_guard l(monc_lock);
+ if (!initialized || stopping) {
+ onfinish->complete(-ECANCELED);
+ return;
+ }
MonCommand *r = new MonCommand(++last_mon_command_tid);
r->target_rank = rank;
r->cmd = cmd;