From 91a2d408a9349db08e916e2145040df8b1f17e14 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Thu, 6 Sep 2018 10:44:26 +0800 Subject: [PATCH] mon/OSDMonitor: invalidate max_failed_since on cancel_report max_failed_since might reference the very failure-report which is to be cancelled. We can simply invalidate it here to make **get_failed_since()** recalculate if necessary. Fixes: http://tracker.ceph.com/issues/35860 Signed-off-by: xie xingguo --- src/mon/OSDMonitor.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 4d560811a857b..c0bae30e8905a 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -81,7 +81,7 @@ struct failure_info_t { MonOpRequestRef op) { map::iterator p = reporters.find(who); if (p == reporters.end()) { - if (max_failed_since < failed_since) + if (max_failed_since != utime_t() && max_failed_since < failed_since) max_failed_since = failed_since; p = reporters.insert(map::value_type(who, failure_reporter_t(failed_since))).first; } @@ -108,6 +108,7 @@ struct failure_info_t { return MonOpRequestRef(); MonOpRequestRef ret = p->second.op; reporters.erase(p); + max_failed_since = utime_t(); return ret; } }; -- 2.39.5