From: Chang Liu Date: Thu, 29 Mar 2018 08:54:14 +0000 (+0800) Subject: common: get ride of OpHistory::dump_ops_by_duration X-Git-Tag: v13.1.0~381^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=01ff39dc8d2357596d7182053399ac19ae595860;p=ceph.git common: get ride of OpHistory::dump_ops_by_duration Signed-off-by: Chang Liu --- diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index 33e56f7bdffe..6d68da36280f 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -108,7 +108,7 @@ void OpHistory::cleanup(utime_t now) } } -void OpHistory::dump_ops(utime_t now, Formatter *f, set filters) +void OpHistory::dump_ops(utime_t now, Formatter *f, set filters, bool by_duration) { Mutex::Locker history_lock(ops_history_lock); cleanup(now); @@ -117,35 +117,20 @@ void OpHistory::dump_ops(utime_t now, Formatter *f, set filters) f->dump_int("duration", history_duration); { f->open_array_section("ops"); - for (auto i = arrived.begin(); - i != arrived.end(); - ++i) { - if (!i->second->filter_out(filters)) - continue; - f->open_object_section("op"); - i->second->dump(now, f); - f->close_section(); - } - f->close_section(); - } - f->close_section(); -} + auto dump_fn = [&f, &now, &filters](auto begin_iter, auto end_iter) { + for (auto i=begin_iter; i!=end_iter; ++i) { + if (!i->second->filter_out(filters)) + continue; + f->open_object_section("op"); + i->second->dump(now, f); + f->close_section(); + } + }; -void OpHistory::dump_ops_by_duration(utime_t now, Formatter *f, set filters) -{ - Mutex::Locker history_lock(ops_history_lock); - cleanup(now); - f->open_object_section("op_history"); - f->dump_int("size", history_size); - f->dump_int("duration", history_duration); - { - f->open_array_section("ops"); - for (auto i = duration.rbegin(); i != duration.rend(); ++i) { - f->open_object_section("op"); - if (!i->second->filter_out(filters)) - continue; - i->second->dump(now, f); - f->close_section(); + if (by_duration) { + dump_fn(duration.rbegin(), duration.rend()); + } else { + dump_fn(arrived.begin(), arrived.end()); } f->close_section(); } @@ -188,11 +173,7 @@ bool OpTracker::dump_historic_ops(Formatter *f, bool by_duration, set fi RWLock::RLocker l(lock); utime_t now = ceph_clock_now(); - if (by_duration) { - history.dump_ops_by_duration(now, f, filters); - } else { - history.dump_ops(now, f, filters); - } + history.dump_ops(now, f, filters, by_duration); return true; } diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 511bb508a89d..85cdc177f9f1 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -84,8 +84,7 @@ public: } void _insert_delayed(const utime_t& now, TrackedOpRef op); - void dump_ops(utime_t now, Formatter *f, set filters = {""}); - void dump_ops_by_duration(utime_t now, Formatter *f, set filters = {""}); + void dump_ops(utime_t now, Formatter *f, set filters = {""}, bool by_duration=false); void dump_slow_ops(utime_t now, Formatter *f, set filters = {""}); void on_shutdown(); void set_size_and_duration(uint32_t new_size, uint32_t new_duration) {