From: xie xingguo Date: Thu, 6 Sep 2018 02:44:26 +0000 (+0800) Subject: mon/OSDMonitor: invalidate max_failed_since on cancel_report X-Git-Tag: v14.0.1~358^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F23949%2Fhead;p=ceph.git 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 --- diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 4d560811a857..c0bae30e8905 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; } };