utime_t now = ceph_clock_now(cct);
while (!failure_queue.empty()) {
int osd = failure_queue.begin()->first;
- int failed_for = (int)(double)(now - failure_queue.begin()->second);
entity_inst_t i = osdmap->get_inst(osd);
- monc->send_mon_message(new MOSDFailure(monc->get_fsid(), i, failed_for,
- osdmap->get_epoch()));
- failure_pending[osd] = make_pair(failure_queue.begin()->second, i);
+ if (!failure_pending.count(osd)) {
+ int failed_for = (int)(double)(now - failure_queue.begin()->second);
+ monc->send_mon_message(new MOSDFailure(monc->get_fsid(), i, failed_for,
+ osdmap->get_epoch()));
+ failure_pending[osd] = make_pair(failure_queue.begin()->second, i);
+ }
failure_queue.erase(osd);
}
}