Skip to content

Commit

Permalink
Fix mon routed_request_tids leak
Browse files Browse the repository at this point in the history
Signed-off-by: Ning Yao <zay11022@gmail.com>
  • Loading branch information
mslovy committed Oct 8, 2015
1 parent f84e6b8 commit 36504bd
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/mon/Monitor.cc
Expand Up @@ -3284,8 +3284,9 @@ void Monitor::handle_route(MonOpRequestRef op)
rr->con->send_message(m->msg);
m->msg = NULL;
}
assert(rr->tid == m->session_mon_tid && rr->session->routed_request_tids.count(m->session_mon_tid));
routed_requests.erase(m->session_mon_tid);
rr->session->routed_request_tids.insert(rr->tid);
rr->session->routed_request_tids.erase(m->session_mon_tid);
delete rr;
} else {
dout(10) << " don't have routed request tid " << m->session_mon_tid << dendl;
Expand Down Expand Up @@ -3319,6 +3320,10 @@ void Monitor::resend_routed_requests()
req->set_connection(rr->con);
rr->op->mark_event("retry routed request");
retry.push_back(new C_RetryMessage(this, rr->op));
if (rr->session) {
assert(rr->session->routed_request_tids.count(p->first));
rr->session->routed_request_tids.erase(p->first);
}
delete rr;
} else {
rr->op->mark_event("resend forwarded message to leader");
Expand All @@ -3343,13 +3348,13 @@ void Monitor::remove_session(MonSession *s)
for (set<uint64_t>::iterator p = s->routed_request_tids.begin();
p != s->routed_request_tids.end();
++p) {
if (routed_requests.count(*p)) {
RoutedRequest *rr = routed_requests[*p];
dout(10) << " dropping routed request " << rr->tid << dendl;
delete rr;
routed_requests.erase(*p);
}
assert(routed_requests.count(*p));
RoutedRequest *rr = routed_requests[*p];
dout(10) << " dropping routed request " << rr->tid << dendl;
delete rr;
routed_requests.erase(*p);
}
s->routed_request_tids.clear();
s->con->set_priv(NULL);
session_map.remove_session(s);
logger->set(l_mon_num_sessions, session_map.get_size());
Expand Down

0 comments on commit 36504bd

Please sign in to comment.