From 02af0969516ad4610a3dea58cc7423e1ede13f55 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 9 Oct 2009 16:43:49 -0700 Subject: [PATCH] mon: use reply_request in pgmon pg stats update --- src/TODO | 2 -- src/mon/PGMonitor.cc | 10 +++++----- src/mon/PGMonitor.h | 7 ++++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/TODO b/src/TODO index 2fef139c3f8b5..6226afa523053 100644 --- a/src/TODO +++ b/src/TODO @@ -44,8 +44,6 @@ v0.17 - kclient: retry alloc on ENOMEM when reading from connection? - kill mon->osd - - MRoute breaks if we bounce between multiple monitors - - monitor may drop our request if cluster changes, but session doesn't reset - kill shutdown msg - kill mon->mds - beacon reply diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 528d9b2ecee11..9df03f2561081 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -377,15 +377,15 @@ bool PGMonitor::prepare_pg_stats(MPGStats *stats) */ } - paxos->wait_for_commit(new C_Stats(this, ack, stats->get_orig_source_inst())); - delete stats; + paxos->wait_for_commit(new C_Stats(this, stats, ack)); return true; } -void PGMonitor::_updated_stats(MPGStatsAck *ack, entity_inst_t who) +void PGMonitor::_updated_stats(MPGStats *req, MPGStatsAck *ack) { - dout(7) << "_updated_stats for " << who << dendl; - mon->messenger->send_message(ack, who); + dout(7) << "_updated_stats for " << req->get_orig_source_inst() << dendl; + mon->send_reply(req, ack); + delete req; } diff --git a/src/mon/PGMonitor.h b/src/mon/PGMonitor.h index de44d56021308..9e0584ee3c1d6 100644 --- a/src/mon/PGMonitor.h +++ b/src/mon/PGMonitor.h @@ -55,15 +55,16 @@ private: bool preprocess_pg_stats(MPGStats *stats); bool prepare_pg_stats(MPGStats *stats); - void _updated_stats(MPGStatsAck *ack, entity_inst_t who); + void _updated_stats(MPGStats *req, MPGStatsAck *ack); struct C_Stats : public Context { PGMonitor *pgmon; + MPGStats *req; MPGStatsAck *ack; entity_inst_t who; - C_Stats(PGMonitor *p, MPGStatsAck *a, entity_inst_t w) : pgmon(p), ack(a), who(w) {} + C_Stats(PGMonitor *p, MPGStats *r, MPGStatsAck *a) : pgmon(p), req(r), ack(a) {} void finish(int r) { - pgmon->_updated_stats(ack, who); + pgmon->_updated_stats(req, ack); } }; -- 2.39.5