From: Xiubo Li Date: Thu, 2 Jan 2020 07:38:45 +0000 (-0500) Subject: mds: add XXPayload:print support X-Git-Tag: v16.1.0~686^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=83de101eddca31be9efaec6fbbd9d12c14a68d63;p=ceph.git mds: add XXPayload:print support Provide more info in the message.print for metric payloads. Fixes: https://tracker.ceph.com/issues/47844 Signed-off-by: Xiubo Li --- diff --git a/src/include/cephfs/metrics/Types.h b/src/include/cephfs/metrics/Types.h index 01f4d7ed087c..524192b5d595 100644 --- a/src/include/cephfs/metrics/Types.h +++ b/src/include/cephfs/metrics/Types.h @@ -78,6 +78,12 @@ struct CapInfoPayload { f->dump_int("cap_misses", cap_misses); f->dump_int("num_caps", nr_caps); } + + void print(ostream *out) const { + *out << "cap_hits: " << cap_hits << " " + << "cap_misses: " << cap_misses << " " + << "num_caps: " << nr_caps; + } }; struct ReadLatencyPayload { @@ -107,6 +113,10 @@ struct ReadLatencyPayload { void dump(Formatter *f) const { f->dump_int("latency", lat); } + + void print(ostream *out) const { + *out << "latency: " << lat; + } }; struct WriteLatencyPayload { @@ -136,6 +146,10 @@ struct WriteLatencyPayload { void dump(Formatter *f) const { f->dump_int("latency", lat); } + + void print(ostream *out) const { + *out << "latency: " << lat; + } }; struct MetadataLatencyPayload { @@ -165,6 +179,10 @@ struct MetadataLatencyPayload { void dump(Formatter *f) const { f->dump_int("latency", lat); } + + void print(ostream *out) const { + *out << "latency: " << lat; + } }; struct UnknownPayload { @@ -180,6 +198,9 @@ struct UnknownPayload { void dump(Formatter *f) const { } + + void print(ostream *out) const { + } }; typedef boost::variant { + public: + explicit PrintPayloadVisitor(ostream *out) : _out(out) { + } + + template + inline void operator()(const ClientMetricPayload &payload) const { + ClientMetricType metric_type = ClientMetricPayload::METRIC_TYPE; + *_out << "[client_metric_type: " << metric_type; + payload.print(_out); + *_out << "]"; + } + + private: + ostream *_out; + }; + void encode(bufferlist &bl) const { boost::apply_visitor(EncodePayloadVisitor(bl), payload); } @@ -277,6 +315,10 @@ public: apply_visitor(DumpPayloadVisitor(f), payload); } + void print(ostream *out) const { + apply_visitor(PrintPayloadVisitor(out), payload); + } + ClientMetricPayload payload; }; WRITE_CLASS_ENCODER(ClientMetricMessage); diff --git a/src/messages/MClientMetrics.h b/src/messages/MClientMetrics.h index c348586ed89e..85ba9df57aa9 100644 --- a/src/messages/MClientMetrics.h +++ b/src/messages/MClientMetrics.h @@ -29,7 +29,10 @@ public: } void print(ostream &out) const override { - out << "client_metrics"; + out << "client_metrics "; + for (auto &i : updates) { + i.print(&out); + } } void encode_payload(uint64_t features) override {