From: songbaisen Date: Wed, 30 Mar 2016 03:48:09 +0000 (+0800) Subject: mon: elector dispatch do not alloc memory on monmap X-Git-Tag: v11.0.0~523^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=387c4695bb4e65b67bbbbb985f815a4eb0767311;p=ceph.git mon: elector dispatch do not alloc memory on monmap Signed-off-by: song baisen song.baisen@zte.com.cn --- diff --git a/src/mon/Elector.cc b/src/mon/Elector.cc index 9e011e34fdd7..2ad1161e73ba 100644 --- a/src/mon/Elector.cc +++ b/src/mon/Elector.cc @@ -430,10 +430,10 @@ void Elector::dispatch(MonOpRequestRef op) return; } - MonMap *peermap = new MonMap; - peermap->decode(em->monmap_bl); - if (peermap->epoch > mon->monmap->epoch) { - dout(0) << em->get_source_inst() << " has newer monmap epoch " << peermap->epoch + MonMap peermap; + peermap.decode(em->monmap_bl); + if (peermap.epoch > mon->monmap->epoch) { + dout(0) << em->get_source_inst() << " has newer monmap epoch " << peermap.epoch << " > my epoch " << mon->monmap->epoch << ", taking it" << dendl; @@ -445,15 +445,13 @@ void Elector::dispatch(MonOpRequestRef op) //mon->monmon()->paxos->stash_latest(mon->monmap->epoch, em->monmap_bl); cancel_timer(); mon->bootstrap(); - delete peermap; return; } - if (peermap->epoch < mon->monmap->epoch) { - dout(0) << em->get_source_inst() << " has older monmap epoch " << peermap->epoch + if (peermap.epoch < mon->monmap->epoch) { + dout(0) << em->get_source_inst() << " has older monmap epoch " << peermap.epoch << " < my epoch " << mon->monmap->epoch << dendl; } - delete peermap; switch (em->op) { case MMonElection::OP_PROPOSE: