From 8a619ba77134aa56c7ce2ef199cbe869670d7faa Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Sun, 29 Sep 2019 14:15:07 +0800 Subject: [PATCH] mgr: fix weird health-alert daemon key Was: 19 slow ops, oldest one blocked for 34 sec, daemons [osd,2,osd,4] have slow ops. Now: 153 slow ops, oldest one blocked for 38 sec, daemons [osd.3,osd.4,osd.5] have slow ops. Fixes: https://tracker.ceph.com/issues/42079 Signed-off-by: xie xingguo (cherry picked from commit 25963f24e59568871e8231432bfc31d60624e911) --- src/mgr/DaemonHealthMetricCollector.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/mgr/DaemonHealthMetricCollector.cc b/src/mgr/DaemonHealthMetricCollector.cc index beba5dad815a5..09d98e51c484b 100644 --- a/src/mgr/DaemonHealthMetricCollector.cc +++ b/src/mgr/DaemonHealthMetricCollector.cc @@ -11,6 +11,23 @@ ostream& operator<<(ostream& os, return os << daemon.first << "." << daemon.second; } +// define operator<<(ostream&, const vector&) after +// ostream& operator<<(ostream&, const DaemonKey&), so that C++'s +// ADL can use the former instead of using the generic one: +// operator<<(ostream&, const std::pair&) +ostream& operator<<( + ostream& os, + const vector& daemons) +{ + os << "["; + for (auto d = daemons.begin(); d != daemons.end(); ++d) { + if (d != daemons.begin()) os << ","; + os << *d; + } + os << "]"; + return os; +} + namespace { class SlowOps final : public DaemonHealthMetricCollector { -- 2.39.5