diff options
author | Greg Farnum <greg@inktank.com> | 2013-10-02 16:03:10 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-10-02 17:24:30 -0700 |
commit | 41a13450527c22be6d0d2832129412ac86145db7 (patch) | |
tree | 677cba27acda4fb0973dd08e7f75b71150cf33e4 | |
parent | a8761a5aa5003ab72655e393f7d418f1f95eec1d (diff) | |
download | ceph-41a13450527c22be6d0d2832129412ac86145db7.tar.gz |
TrackedOp: rework dump interface a little
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>
-rw-r--r-- | src/common/TrackedOp.cc | 20 | ||||
-rw-r--r-- | src/common/TrackedOp.h | 4 | ||||
-rw-r--r-- | src/osd/OpRequest.cc | 9 | ||||
-rw-r--r-- | src/osd/OpRequest.h | 2 |
4 files changed, 7 insertions, 28 deletions
diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index f2413d6fc7a..2c19c9ec0f3 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -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(); } } diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 88c3cb632a0..1734fddda0c 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -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 diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index 1c523585a8e..2ed7a23086f 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -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"); diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index 6131aae0d2d..87571f58787 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -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; |