]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: fix weird health-alert daemon key 31039/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Sun, 29 Sep 2019 06:15:07 +0000 (14:15 +0800)
committerNathan Cutler <ncutler@suse.com>
Mon, 21 Oct 2019 22:02:29 +0000 (00:02 +0200)
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 <xie.xingguo@zte.com.cn>
(cherry picked from commit 25963f24e59568871e8231432bfc31d60624e911)

src/mgr/DaemonHealthMetricCollector.cc

index beba5dad815a5757c94a121f4de4bb8dcd78a205..09d98e51c484b3a91139ebc9b73bcac938756286 100644 (file)
@@ -11,6 +11,23 @@ ostream& operator<<(ostream& os,
   return os << daemon.first << "." << daemon.second;
 }
 
+// define operator<<(ostream&, const vector<DaemonKey>&) 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<A,B>&)
+ostream& operator<<(
+   ostream& os,
+   const vector<DaemonHealthMetricCollector::DaemonKey>& 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 {