(*i)->put();
}
}
- void clear_session_waiting_on_pg(Session *session, spg_t pgid) {
+ void clear_session_waiting_on_pg(Session *session, const spg_t &pgid) {
Mutex::Locker l(session_waiting_lock);
map<spg_t, set<Session*> >::iterator i = session_waiting_for_pg.find(pgid);
if (i == session_waiting_for_pg.end()) {
void session_handle_reset(Session *session) {
Mutex::Locker l(session->session_dispatch_lock);
clear_session_waiting_on_map(session);
- vector<spg_t> pgs_to_clear;
- pgs_to_clear.reserve(session->waiting_for_pg.size());
+
for (map<spg_t, list<OpRequestRef> >::iterator i =
session->waiting_for_pg.begin();
i != session->waiting_for_pg.end();
++i) {
- pgs_to_clear.push_back(i->first);
- }
- for (vector<spg_t>::iterator i = pgs_to_clear.begin();
- i != pgs_to_clear.end();
- ++i) {
- clear_session_waiting_on_pg(session, *i);
- }
+ clear_session_waiting_on_pg(session, i->first);
+ }
+
/* Messages have connection refs, we need to clear the
* connection->session->message->connection
* cycles which result.