From: Dan Mick Date: Fri, 31 May 2013 04:54:41 +0000 (-0700) Subject: PGMonitor: fix pg dump and dump_stuck X-Git-Tag: v0.65~136^2^2~33 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a4b824cd816159ec6de0dc3fe92f04a936dc040c;p=ceph.git PGMonitor: fix pg dump and dump_stuck dump needed to default to format plain, not json dump_stuck was not doing format = plain correctly (coredumping) Signed-off-by: Dan Mick --- diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 581391f7bbc..58b1fc7bd52 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -1129,7 +1129,7 @@ bool PGMonitor::preprocess_command(MMonCommand *m) } string format; - cmd_getval(g_ceph_context, cmdmap, "format", format, string("json")); + cmd_getval(g_ceph_context, cmdmap, "format", format, string("plain")); boost::scoped_ptr f(new_formatter(format)); if (prefix == "pg stat") { @@ -1192,7 +1192,6 @@ bool PGMonitor::preprocess_command(MMonCommand *m) r = 0; } else if (prefix == "pg dump_stuck") { vector stuckop_vec; - string format; cmd_getval(g_ceph_context, cmdmap, "stuckops", stuckop_vec); if (stuckop_vec.empty()) stuckop_vec.push_back("unclean"); @@ -1200,8 +1199,8 @@ bool PGMonitor::preprocess_command(MMonCommand *m) cmd_getval(g_ceph_context, cmdmap, "threshold", threshold, int64_t(g_conf->mon_pg_stuck_threshold)); - r = dump_stuck_pg_stats(f.get(), (int)threshold, stuckop_vec); - f->flush(ds); + boost::scoped_ptr f(new_formatter("json")); + r = dump_stuck_pg_stats(ds, f.get(), (int)threshold, stuckop_vec); ss << "ok"; r = 0; } else if (prefix == "pg map") { @@ -1574,13 +1573,11 @@ void PGMonitor::check_full_osd_health(list >& summa } } -int PGMonitor::dump_stuck_pg_stats(Formatter *f, +int PGMonitor::dump_stuck_pg_stats(stringstream &ds, + Formatter *f, int threshold, vector& args) const { - string val; - ostringstream err; - PGMap::StuckPG stuck_type; string type = args[0]; if (type == "inactive") @@ -1593,7 +1590,12 @@ int PGMonitor::dump_stuck_pg_stats(Formatter *f, utime_t now(ceph_clock_now(g_ceph_context)); utime_t cutoff = now - utime_t(threshold, 0); - pg_map.dump_stuck(f, stuck_type, cutoff); + if (!f) { + pg_map.dump_stuck_plain(ds, stuck_type, cutoff); + } else { + pg_map.dump_stuck(f, stuck_type, cutoff); + f->flush(ds); + } return 0; } diff --git a/src/mon/PGMonitor.h b/src/mon/PGMonitor.h index 8bf3c1c1b7d..e3afd0df247 100644 --- a/src/mon/PGMonitor.h +++ b/src/mon/PGMonitor.h @@ -128,7 +128,7 @@ private: * * @return 0 on success, negative error code on failure */ - int dump_stuck_pg_stats(Formatter *f, + int dump_stuck_pg_stats(stringstream &ds, Formatter *f, int threshold, vector& args) const;