From c9dad52c9607b84b2d681551dbdf6adae8260f80 Mon Sep 17 00:00:00 2001 From: Haomai Wang Date: Fri, 2 Oct 2015 19:14:59 +0800 Subject: [PATCH] Mon: Fix decoded message leak when this monitor is leader Fix #13109 Signed-off-by: Haomai Wang Reviewed-by: Sage Weil --- src/mon/Monitor.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index b49578d3906d4..7dff5face4f0d 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, -- 2.39.5