From: Sage Weil Date: Wed, 25 Sep 2013 22:47:28 +0000 (-0700) Subject: mon/PGMonitor: fix segfault when osdmap and pgmap stats are out of sync X-Git-Tag: v0.71~76^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F640%2Fhead;p=ceph.git mon/PGMonitor: fix segfault when osdmap and pgmap stats are out of sync The leader mon is responsible for propagating changes in the osdmap into the pgmap (e.g., when a pool or osd goes away). If that hasn't happened yet, the pg_map map will be out of sync with the current set of pools. We shouldn't crash. Signed-off-by: Sage Weil --- diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 76cfde7de0eb..0f495052747e 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1865,6 +1865,8 @@ void PGMonitor::get_health(list >& summary, p != pg_map.pg_pool_sum.end(); ++p) { const pg_pool_t *pi = mon->osdmon()->osdmap.get_pg_pool(p->first); + if (!pi) + continue; // in case osdmap changes haven't propagated to PGMap yet if (pi->get_pg_num() > pi->get_pgp_num()) { ostringstream ss; ss << "pool " << mon->osdmon()->osdmap.get_pool_name(p->first) << " pg_num "