void Monitor::remove_session(Session *s)
{
dout(10) << "remove_session " << s << " " << s->inst << dendl;
+ assert(!s->closed);
for (set<__u64>::iterator p = s->routed_request_tids.begin();
p != s->routed_request_tids.end();
p++) {
Mutex::Locker l(lock);
dout(10) << "reset/close on session " << s->inst << dendl;
- remove_session(s);
+ if (!s->closed)
+ remove_session(s);
s->put();
// remove from connection, too.
multimap<int, Session*> by_osd;
void remove_session(Session *s) {
+ assert(!s->closed);
for (map<nstring,Subscription*>::iterator p = s->sub_map.begin(); p != s->sub_map.end(); ++p)
p->second->type_item.remove_myself();
s->sub_map.clear();