]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common: get ride of OpHistory::dump_ops_by_duration
authorChang Liu <liuchang0812@gmail.com>
Thu, 29 Mar 2018 08:54:14 +0000 (16:54 +0800)
committerChang Liu <liuchang0812@gmail.com>
Thu, 29 Mar 2018 09:36:52 +0000 (17:36 +0800)
Signed-off-by: Chang Liu <liuchang0812@gmail.com>
src/common/TrackedOp.cc
src/common/TrackedOp.h

index 33e56f7bdffe616a7eb1944f9c7f017bc0f2528e..6d68da36280f93421adfceb6ab09daf49a1398f4 100644 (file)
@@ -108,7 +108,7 @@ void OpHistory::cleanup(utime_t now)
   }
 }
 
-void OpHistory::dump_ops(utime_t now, Formatter *f, set<string> filters)
+void OpHistory::dump_ops(utime_t now, Formatter *f, set<string> 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<string> 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<string> 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<string> 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;
 }
 
index 511bb508a89d36b13806ddfb4fb3ddf19e848993..85cdc177f9f1ef7d78bc4ea8aa9abb2ee454e862 100644 (file)
@@ -84,8 +84,7 @@ public:
   }
 
   void _insert_delayed(const utime_t& now, TrackedOpRef op);
-  void dump_ops(utime_t now, Formatter *f, set<string> filters = {""});
-  void dump_ops_by_duration(utime_t now, Formatter *f, set<string> filters = {""});
+  void dump_ops(utime_t now, Formatter *f, set<string> filters = {""}, bool by_duration=false);
   void dump_slow_ops(utime_t now, Formatter *f, set<string> filters = {""});
   void on_shutdown();
   void set_size_and_duration(uint32_t new_size, uint32_t new_duration) {