From 4d8f78bc6577521ce1872b9285722a303dee5f85 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 25 Sep 2013 15:47:28 -0700 Subject: [PATCH] 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 --- src/mon/PGMonitor.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 76cfde7de0eb8..0f495052747e9 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 "