summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-10-02 16:03:10 -0700
committerGreg Farnum <greg@inktank.com>2013-10-02 17:24:30 -0700
commit41a13450527c22be6d0d2832129412ac86145db7 (patch)
tree677cba27acda4fb0973dd08e7f75b71150cf33e4
parenta8761a5aa5003ab72655e393f7d418f1f95eec1d (diff)
downloadceph-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.cc20
-rw-r--r--src/common/TrackedOp.h4
-rw-r--r--src/osd/OpRequest.cc9
-rw-r--r--src/osd/OpRequest.h2
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;