From e635c47851d185eda557e36bdc4bf3775f7b87a2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 26 Jun 2013 06:53:08 -0700 Subject: [PATCH] mon/PGMonitor: use post_paxos_update, not init, to refresh from osdmap We do two things here: - make init an one-time unconditional init method, which is what the health service expects/needs. - switch PGMonitor::init to be post_paxos_update() which is called after the other services update, which is what PGMonitor really needs. This is a new version of the fix originally in commit a2fe0137946541e7b3b537698e1865fbce974ca6 (and those around it). That is, this re-fixes a problem where osds do not see pg creates from their subscribe due to map_pg_creates() not getting called. Backport: cuttlefish Signed-off-by: Sage Weil --- src/mon/Monitor.cc | 10 +++++----- src/mon/PGMonitor.cc | 2 +- src/mon/PGMonitor.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 42bf9d5ac0b66..3c33189ab6095 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -520,14 +520,14 @@ void Monitor::init_paxos() dout(10) << __func__ << dendl; paxos->init(); + // init services + for (int i = 0; i < PAXOS_NUM; ++i) { + paxos_service[i]->init(); + } + // update paxos if (paxos->is_consistent()) { refresh_from_paxos(NULL); - - // init services - for (int i = 0; i < PAXOS_NUM; ++i) { - paxos_service[i]->init(); - } } } diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 479b498f934ed..88208354c8ea6 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -271,7 +271,7 @@ void PGMonitor::upgrade_format() propose_pending(); } -void PGMonitor::init() +void PGMonitor::post_paxos_update() { if (mon->osdmon()->osdmap.get_epoch()) { map_pg_creates(); diff --git a/src/mon/PGMonitor.h b/src/mon/PGMonitor.h index f8cf279a3b1f1..8117ee2bba8ad 100644 --- a/src/mon/PGMonitor.h +++ b/src/mon/PGMonitor.h @@ -53,7 +53,7 @@ private: void create_initial(); void update_from_paxos(bool *need_bootstrap); void upgrade_format(); - void init(); + void post_paxos_update(); void handle_osd_timeouts(); void create_pending(); // prepare a new pending // propose pending update to peers -- 2.39.5