From: Haomai Wang Date: Fri, 2 Oct 2015 11:14:59 +0000 (+0800) Subject: Mon: Fix decoded message leak when this monitor is leader X-Git-Tag: v9.1.0~34 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c9dad52c9607b84b2d681551dbdf6adae8260f80;p=ceph.git Mon: Fix decoded message leak when this monitor is leader Fix #13109 Signed-off-by: Haomai Wang Reviewed-by: Sage Weil --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index b49578d3906..7dff5face4f 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3311,16 +3311,14 @@ void Monitor::resend_routed_requests() ++p) { RoutedRequest *rr = p->second; - bufferlist::iterator q = rr->request_bl.begin(); - PaxosServiceMessage *req = (PaxosServiceMessage *)decode_message(cct, 0, q); - if (mon == rank) { - dout(10) << " requeue for self tid " << rr->tid << " " << *req << dendl; - req->set_connection(rr->con); + dout(10) << " requeue for self tid " << rr->tid << dendl; rr->op->mark_event("retry routed request"); retry.push_back(new C_RetryMessage(this, rr->op)); delete rr; } else { + bufferlist::iterator q = rr->request_bl.begin(); + PaxosServiceMessage *req = (PaxosServiceMessage *)decode_message(cct, 0, q); rr->op->mark_event("resend forwarded message to leader"); dout(10) << " resend to mon." << mon << " tid " << rr->tid << " " << *req << dendl; MForward *forward = new MForward(rr->tid, req, rr->con_features,