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: v12.2.9~67^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f495cac17f535e4ccb015d1efcb9c775e125c852;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 (cherry picked from commit 91a2d408a9349db08e916e2145040df8b1f17e14) --- diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 076e301f2c7..4026d97f15e 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; } };