mirror of
https://github.com/ceph/ceph
synced 2025-01-20 01:51:34 +00:00
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
a2fe013794
(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 <sage@inktank.com>
This commit is contained in:
parent
131686980f
commit
e635c47851
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user