]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
TrackedOp: rework dump interface a little
authorGreg Farnum <greg@inktank.com>
Wed, 2 Oct 2013 23:03:10 +0000 (16:03 -0700)
committerGreg Farnum <greg@inktank.com>
Thu, 3 Oct 2013 00:24:30 +0000 (17:24 -0700)
Put only the bare essentials in the TrackedOp::dump() implementation, but
have that call into a _dump() function that implementations can specify.

Signed-off-by: Greg Farnum <greg@inktank.com>
src/common/TrackedOp.cc
src/common/TrackedOp.h
src/osd/OpRequest.cc
src/osd/OpRequest.h

index f2413d6fc7a8ce0bcc3977ae3c8df37275ada624..2c19c9ec0f3c9604526543d7071b013f1499ceb5 100644 (file)
@@ -257,25 +257,9 @@ void TrackedOp::dump(utime_t now, Formatter *f) const
   f->dump_stream("received_at") << get_arrived();
   f->dump_float("age", now - get_arrived());
   f->dump_float("duration", get_duration());
-  f->dump_string("current_state", state_string());
-  if (m->get_orig_source().is_client()) {
-    f->open_object_section("client_info");
-    stringstream client_name;
-    client_name << m->get_orig_source();
-    f->dump_string("client", client_name.str());
-    f->dump_int("tid", m->get_tid());
-    f->close_section(); // client_info
-  }
   {
-    f->open_array_section("events");
-    for (list<pair<utime_t, string> >::const_iterator i = events.begin();
-        i != events.end();
-        ++i) {
-      f->open_object_section("event");
-      f->dump_stream("time") << i->first;
-      f->dump_string("event", i->second);
-      f->close_section();
-    }
+    f->open_array_section("type_data");
+    _dump(now, f);
     f->close_section();
   }
 }
index 88c3cb632a00d360c33d68410aa86586cd91e1eb..1734fddda0c92a81a8eaef5b16f122f67c364f83 100644 (file)
@@ -133,6 +133,8 @@ protected:
   }
 
   virtual void init_from_message() {};
+  /// output any type-specific data you want to get when dump() is called
+  virtual void _dump(utime_t now, Formatter *f) const {}
 
 public:
   virtual ~TrackedOp() { assert(request); request->put(); }
@@ -152,7 +154,7 @@ public:
   virtual const char *state_string() const {
     return events.rbegin()->second.c_str();
   }
-  virtual void dump(utime_t now, Formatter *f) const;
+  void dump(utime_t now, Formatter *f) const;
 };
 
 #endif
index 1c523585a8e21dc3c322ba7819b9621e2a58fe8d..2ed7a23086f6e3cb267171432f4e72fc6fecf0a0 100644 (file)
@@ -23,16 +23,9 @@ OpRequest::OpRequest(Message *req, OpTracker *tracker) :
   }
 }
 
-void OpRequest::dump(utime_t now, Formatter *f) const
+void OpRequest::_dump(utime_t now, Formatter *f) const
 {
   Message *m = request;
-  stringstream name;
-  m->print(name);
-  f->dump_string("description", name.str().c_str()); // this OpRequest
-  f->dump_unsigned("rmw_flags", rmw_flags);
-  f->dump_stream("received_at") << get_arrived();
-  f->dump_float("age", now - get_arrived());
-  f->dump_float("duration", get_duration());
   f->dump_string("flag_point", state_string());
   if (m->get_orig_source().is_client()) {
     f->open_object_section("client_info");
index 6131aae0d2d8704cbb0cc2ae89221568dc0d40c7..87571f58787f70b8fc1e58ceb86b1bff492dcec3 100644 (file)
@@ -59,7 +59,7 @@ struct OpRequest : public TrackedOp {
   void set_class_write() { rmw_flags |= CEPH_OSD_RMW_FLAG_CLASS_WRITE; }
   void set_pg_op() { rmw_flags |= CEPH_OSD_RMW_FLAG_PGOP; }
 
-  void dump(utime_t now, Formatter *f) const;
+  void _dump(utime_t now, Formatter *f) const;
 
 private:
   osd_reqid_t reqid;