{
int num;
- Mutex::Locker l(lock);
- Mutex::Locker l(deleted_lock);
+ Mutex::Locker l1(lock);
+ Mutex::Locker l2(deleted_lock);
while (!deleted_conns.empty()) {
- set<AsyncConnectionRef>::iterator it = deleted_conns.begin();
+ auto it = deleted_conns.begin();
AsyncConnectionRef p = *it;
ldout(cct, 5) << __func__ << " delete " << p << dendl;
- conns.erase(p);
+ auto conns_it = conns.find(p->peer_addr);
+ if (conns_it->second == p)
+ conns.erase(conns_it);
+ accepting_conns.erase(p);
deleted_conns.erase(it);
++num;
}
*
* These are not yet in the conns map.
*/
- // FIXME clear up
set<AsyncConnectionRef> accepting_conns;
/**
deleted_conns.insert(conn);
if (deleted_conns.size() >= ReapDeadConnectionThreshold) {
- local_worker->dispatch_event_external(reap_handler);
+ local_worker->center.dispatch_event_external(reap_handler);
} else if (!reap_time_fd) {
- reap_time_fd = local_worker->create_time_event(
+ reap_time_fd = local_worker->center.create_time_event(
ReapDeadConnectionMaxPeriod, reap_handler);
}
}